{"_id":"23andme-node","_rev":"5-7d1b378f526f8d93405f5739b7eed134","name":"23andme-node","description":"Node.js client for 23andme API.","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"23andme-node","version":"0.0.1","description":"Node.js client for 23andme API.","main":"index.js","dependencies":{"request":"~2.27.0","fermata":"~0.10.0"},"devDependencies":{},"scripts":{},"repository":{"type":"git","url":"https://github.com/crzrcn/23andme-node"},"keywords":["23andme","genomics","node.js","API","genes","synthetic biology"],"author":{"name":"Fernando Martinez","url":"crzrcn"},"license":"MIT","bugs":{"url":"https://github.com/crzrcn/23andme-node/issues"},"engines":{"node":">= 0.10.15"},"readme":"23andme-node\n===\n\nPull requests and suggestions welcome! \n\n# Index\n\n* [Installation](#installation)\n* [Usage](#usage)\n* [Documentation](#documentation)\n* [TODO](#todo)\n\n# Installation\n\n`npm install 23andme-node`\n\n# Usage\n\n```javascript\nvar g23 = require('23andme-node');\n\ng23.getProfiles({token: 'fdab6a6892b198e40c2484bf2121f761'}, function (err, data) {\n  console.log(utils.inspect(err || data, false, null));\n});\n```\n\n# Documentation\n\nAll methods return a callback with the signature `callback(error, data)`.\n\n`data` and `error` are JavaScript objects.\n\nAll methods expect a `params` object with at least the user's authentication `token`.\n\nAll methods return the same `data` object regardless of HTTP verb.\n\nPossible error messages:\n\n`invalid_request` - The request is missing a required parameter, or includes an unsupported or incorrect parameter.\n\n`invalid_client` - Client authentication failed (e.g. unknown client, no client credentials included, multiple client credentials included, or unsupported credentials type).\n\n`unauthorized_client` - The client is not authorized to request an authorization code using this method.\n\n`access_denied`\t- The resource owner or authorization server denied the request.\n\n`invalid_scope` - The requested scope is invalid, unknown, or malformed.\n\n`unsupported_response_type` - The authorization server does not support obtaining an authorization code using this method.\n\nOfficial API [documentation](https://api.23andme.com/docs/reference/).\n\n## getProfiles(params, callback(error, data))\n\n### params\n\n* None!\n\n### data\n\n```javascript \n{\n    first_name: \"Gregor\",\n    last_name: \"Mendel\",\n    id: \"a42e94634e3f7683\",\n    profiles: [\n        {\n            first_name: \"Johann\",\n            last_name: \"Mendel\",\n            id: c4480ba411939067\n        }, ...\n    ]\n}\n```\n\n## getProfileNames(params, callback(error, data))\n\n### params\n \n* `profileId` - Optional. Filters names to just one profile.\n\n### data\n\n```javascript\n{\n    id: \"c4480ba411939067\",\n    url_size_40_40: \"https://...cfff05bbb_T.0_0_299_299.jpg\",\n    url_size_60_60: \"https://...cfff05bbb_S.0_0_299_299.jpg\",\n    url_size_200_200: \"https://...ff05bbb_M.0_0_299_299.jpg\"\n}\n```\n\n## getProfilePictures(params, callback(error, data))\n\n### params\n\n* `profileId`\n\n### data\n\n```javascript\n{\n    id: \"c4480ba411939067\",\n    url_size_40_40: \"https://...cfff05bbb_T.0_0_299_299.jpg\",\n    url_size_60_60: \"https://...cfff05bbb_S.0_0_299_299.jpg\",\n    url_size_200_200: \"https://...ff05bbb_M.0_0_299_299.jpg\"\n}\n```\n\n## getPublished(params, callback(error, data))\n\n### params\n\n* `profileId`\n* `featureId` - Values are `'music'`, `'neanderthal'`, `'maternal'`, `'paternal'`, `'composition'`\n* `linkId` - Optional. Filters results to just one link.\n\n### data\n\n```javascript\n{\n    id: \"c4480ba411939067\",\n    url: \"https://www.23andme.com/published/.../\",\n    link_id: \"925v3n92424g4\",\n    feature_id: \"neanderthal\",\n    status: \"unpublished\"\n}\n```\n\n## getIntroduction(params, callback(error, data))\n\n### params\n\n\n* `profileId`\n* `matchId`\n\n### data\n\n```javascript\n{\n    introduction: {\n      status: \"received\",\n      visibility: \"genome\",\n      message_text: \"Hi! Want to explore?\"\n    },\n    can_send: false\n}\n```\n\n## getGenotypes(params, callback(error, data))\n\n### params\n\n\n* `profileId`\n* `locations` - An array of SNP strings. \n* `unfiltered` - Optional. Possible values are `true` or `false`\n\n### data\n\n```javascript\n{\n    i3000001: \"II\",\n    rs3094315: \"AA\"\n    id: \"c4480ba411939067\"\n}\n```\n\n## getGenomes(params, callback(error, data))\n\n### params\n\n* `profileID`\n* `unfiltered` - Optional. Possible values are `true` or `false`\n\n### data\n\n```javascript\n{\n    id: \"c4480ba411939067\",\n    genome: \"ACTAGTAG__TTGADDAAIICCTT\" // ... (2MB string!)\n}\n```\n\n## getHaplogroups(params, callback(error, data))\n\n### params\n\n* `profileId`\n\n### data\n\n```javascript\n{\n    maternal_terminal_snps: [\n        {\n            rsid: \"i3001424\",\n            rcrs_position: \"15874\"\n        },\n        {\n            rsid: \"i5050411\",\n            rcrs_position: \"15874\"\n        }\n    ],\n    paternal_terminal_snps: [\n        {\n            \"rsid\": \"i3000015\",\n            \"snp\": \"M125\"\n        }\n    ],\n    maternal: \"D4e2\",\n    paternal: \"D2a1\",\n    id: \"c4480ba411939067\"\n}\n```\n## getAncestry(params, callback(error, data))\n\n### params\n\n* `profileId` \n* `threshold` - A number in the interval (0.5, 1.0) exclusive. Default is 0.75.\n\n### data\n\n```javascript\n{\n    id: \"7ad467ea509080fb\"\n    ancestry: {\n        label: \"Total\",\n        proportion: 1.0,\n        unassigned: 0.0,\n        sub_populations: [\n            {\n                label: \"Sub-Saharan African\",\n                proportion: 0.8227\n            },\n            {\n                label: \"European\"\n                proportion: 0.1773,\n                unassigned: 0.0193,\n                sub_populations: [\n                    {\n                        label: \"Northern European\",\n                        proportion: 0.1579,\n                        unassigned: 0.0725,\n                        sub_populations: [\n                            {\n                                label: \"French and German\",\n                                proportion: 0.0676\n                            }, ...\n                        ],\n                    }, ...\n                ]\n            }, ...\n        ]\n    }\n}\n```\n\n## getNeanderthal(params, callback(error, data))\n\n### params\n\n* `profileId` \n\n### data\n\n```javascript\n{\n    id: \"7ad467ea509080fb\"\n    neanderthal: {\n        proportion: 0.0310,\n    }\n}\n```\n\n## getRelatives(params, callback(error, data))\n\n### params\n\n* `profileId`\n* `filters` - An object with properties `limit`, `offset`, `since`, `share_status`, `intro_status`.\n\n`share_status` can have the following values: `'Owned Profile'`, `'Sharing Genomes'`, `'Public Match'`\n\n`intro_status` can have the following values: `'Introduction Sent'`, `'Introduction Received'`, `'Introduction Accepted'`, `'Introduction Declined'`, `'Introduction Cancelled'`\n\n### data\n\n```javacsript\n{\n    id: \"18974891hh1f3h\",\n    count: 10,\n    relatives: [\n        {\n            match_id: \"48f2489h294hf\",\n            first_name: \"Aodh\",\n            last_name: \"O'Donnell\",\n            sex: \"Male\",\n            birth_year: 1977,\n            birthplace: \"United States\",\n            ancestry: \"Northern Europe\",\n            family_locations: [\n                \"Arlington, VA\",\n                \"County Louth, Ireland\"\n            ],\n            family_surnames: [\n                \"Lindell\",\n                \"Dillingham\",\n                \"Kelly\"\n            ],\n            shared_segments: 23,\n            relationship: \"3rd Cousin\",\n            predicted_relationship_code: 32,\n            user_relationship_code: null,\n            range: [\"3rd Cousin\", \"6th Cousin\"],\n            similarity: 0.24,\n            maternal_haplogroup: \"K1b1a1\",\n            paternal_haplogroup: \"G2a5\",\n            maternal_side: false,\n            paternal_side: true,\n            notes: \"we have the same familiar surnames\",\n            added: 1348699925,\n            updated: 1348699975,\n            residence: \"North Carolina\",\n            intro_status: \"Introduction Accepted\",\n            share_status: \"Sharing Genomes\",\n            profile_picture_urls: {\n                url_size_40_40: \"https://...cfff05bbb_T.0_0_299_299.jpg\",\n                ...\n            }\n        }, ...\n    ]\n}\n```\n\n## getRisks(params, callback(error, data))\n\n### params\n\n* `profileId`\n\n### data\n\n```javascript\n{\n    id: \"c4480ba411939067\",\n    risks: [\n        {\n            description: \"Atrial Fibrillation\",\n            report_id: \"atrialfib\",\n            population_risk: 0.2715,\n            risk: 0.4164\n        },\n        {\n            description: \"Prostate Cancer\",\n            report_id: \"prostate\",\n            population_risk: 0.1783,\n            risk: 0.2585\n        }, ...\n    ]\n}\n```\n\n## getCarriers(params, callback(error, data))\n\n### params\n\n* `profileId`\n\n### data\n\n```javascript\n{\n    id: \"c4480ba411939067\",\n    drug_responses: [\n        {\n            description: \"Alcohol Consumption, Smoking and Risk of Esophageal Cancer\",\n            report_id: \"alcohol_esophageal_pgx\",\n            status: \"typical\"\n        },\n        {\n            description: \"Response to Hepatitis C Treatment\",\n            report_id: \"hepc_peginf_ribavirin\",\n            status: \"reduced\"\n        }, ...\n    ]\n}\n```\n\n## getTraits(params, callback(error, data))\n\n### params\n\n* `profileId`\n\n### data\n\n```javascript\n{\n    i\"d: \"c4480ba411939067\",\n    traits: [\n        {\n            description: \"Muscle Performance\",\n            report_id: \"muscleperformance\",\n            possible_traits: [\n                \"Likely Sprinter\",\n                \"Unlikely Sprinter\"\n            ],\n            trait: \"Unlikely Sprinter\"\n        },\n        {\n            description: \"Resistance to HIV/AIDS\",\n            report_id: \"hiv\",\n            possible_traits: [\n                \"Not Resistant\",\n                \"Partially Resistant\"\n            ],\n            trait: \"Not Resistant\"\n        }, ...\n    ],\n}\n```\n\n## postProfilePicture(params, callback(error, data))\n\n### params\n\n* `profileId`\n* `image` - A buffer.\n\n## postPublish(params, callback(error, data))\n\n### params\n\n* `profileId`\n* `featureId` - Values are `'music'`, `'neanderthal'`, `'maternal'`, `'paternal'`, `'composition'`\n\n## putPublish(params, callback(error, data))\n\n### params\n\n* `profileId`\n* `featureId` - Values are `'music'`, `'neanderthal'`, `'maternal'`, `'paternal'`, `'composition'`\n* `linkId`\n* `status` - Values are `'published'` or `'unpublished'`\n\n## patchIntroduction(params, callback(error, data))\n\n### params\n\n* `profileId`\n* `matchId`\n* `status` - Possible values are `'accepted'`, `'rejected'`, `'read'`, `'cancelled'`.\n* `visibility` - Possible values are `'anonymous'`, `'profile'`, `'genome'`\n\nAt least one of `status` and `visibility` has to be provided as parameters.\n\n## patchRelatives(params, callback(error, data)) \n\n### params\n\n* `profileId`\n* `matchId`\n* `notes` - A string.\n* `relationshipCode`\n\nPossible values for `relationshipCode`:\n\n`0` You\n\n`1` Identical Twin\n\n`2` Father\n\n`3` Mother\n\n`4` Son\n\n`5` Daughter\n\n`6` Brother\n\n`7` Sister\n\n`8` Half Brother\n\n`9` Half Sister\n\n`10` Grandfather\n\n`11` Grandmother\n\n`12` Grandson\n\n`13` Granddaughter\n\n`14` Uncle\n\n`15` Aunt\n\n`16` Nephew\n\n`17` Niece\n\n`18` Great Grandfather\n\n`19` Great Grandson\n\n`20` Great Grandmother\n\n`21` Great Granddaughter\n\n`22` Great Uncle\n\n`23` Great Aunt\n\n`24` Great Nephew\n\n`25` Great Niece\n\n`26` 1st Cousin\n\n`27` 1st Cousin, Once Removed\n\n`28` 1st Cousin, Twice Removed\n\n`29` 2nd Cousin\n\n`30` 2nd Cousin, Once Removed\n\n`31` 2nd Cousin, Twice Removed\n\n`32` 3rd Cousin\n\n`33` 3rd Cousin, Once Removed\n\n`34` 3rd Cousin, Twice Removed\n\n`35` 4th Cousin\n\n`38` 5th Cousin\n\n`41` 6th Cousin\n\n`44` Distant Cousin\n\n# TODO\n\n* Tests","readmeFilename":"README.md","_id":"23andme-node@0.0.1","dist":{"shasum":"9eb5e75024e79068b09f975c6ba21dcfbe5dac2e","tarball":"https://registry.npmjs.org/23andme-node/-/23andme-node-0.0.1.tgz","integrity":"sha512-SI5A0kPelrmVhg8ue2m2LQL6WR1rYohLdqQDl3isRPK0hs4oTK9hTj6i0ctEYXy24B1fDf0aJz/YPpGZZE0gyA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9K8mcYa2qXUkxYZI7+mWqEiTB67vn8LS5sha3Z+lblAIhAJxJQawqi2QFUvKLA7n1qNzr/yolnXYV4bQZ5uBL/jpC"}]},"_from":".","_npmVersion":"1.3.7","_npmUser":{"name":"crzrcn","email":"fernanlink@gmail.com"},"maintainers":[{"name":"crzrcn","email":"fernanlink@gmail.com"}]}},"readme":"23andme-node\n===\n\nPull requests and suggestions welcome! \n\n# Index\n\n* [Installation](#installation)\n* [Usage](#usage)\n* [Documentation](#documentation)\n* [TODO](#todo)\n\n# Installation\n\n`npm install 23andme-node`\n\n# Usage\n\n```javascript\nvar g23 = require('23andme-node');\n\ng23.getProfiles({token: 'fdab6a6892b198e40c2484bf2121f761'}, function (err, data) {\n  console.log(utils.inspect(err || data, false, null));\n});\n```\n\n# Documentation\n\nAll methods return a callback with the signature `callback(error, data)`.\n\n`data` and `error` are JavaScript objects.\n\nAll methods expect a `params` object with at least the user's authentication `token`.\n\nAll methods return the same `data` object regardless of HTTP verb.\n\nPossible error messages:\n\n`invalid_request` - The request is missing a required parameter, or includes an unsupported or incorrect parameter.\n\n`invalid_client` - Client authentication failed (e.g. unknown client, no client credentials included, multiple client credentials included, or unsupported credentials type).\n\n`unauthorized_client` - The client is not authorized to request an authorization code using this method.\n\n`access_denied`\t- The resource owner or authorization server denied the request.\n\n`invalid_scope` - The requested scope is invalid, unknown, or malformed.\n\n`unsupported_response_type` - The authorization server does not support obtaining an authorization code using this method.\n\nOfficial API [documentation](https://api.23andme.com/docs/reference/).\n\n## getProfiles(params, callback(error, data))\n\n### params\n\n* None!\n\n### data\n\n```javascript \n{\n    first_name: \"Gregor\",\n    last_name: \"Mendel\",\n    id: \"a42e94634e3f7683\",\n    profiles: [\n        {\n            first_name: \"Johann\",\n            last_name: \"Mendel\",\n            id: c4480ba411939067\n        }, ...\n    ]\n}\n```\n\n## getProfileNames(params, callback(error, data))\n\n### params\n \n* `profileId` - Optional. Filters names to just one profile.\n\n### data\n\n```javascript\n{\n    id: \"c4480ba411939067\",\n    url_size_40_40: \"https://...cfff05bbb_T.0_0_299_299.jpg\",\n    url_size_60_60: \"https://...cfff05bbb_S.0_0_299_299.jpg\",\n    url_size_200_200: \"https://...ff05bbb_M.0_0_299_299.jpg\"\n}\n```\n\n## getProfilePictures(params, callback(error, data))\n\n### params\n\n* `profileId`\n\n### data\n\n```javascript\n{\n    id: \"c4480ba411939067\",\n    url_size_40_40: \"https://...cfff05bbb_T.0_0_299_299.jpg\",\n    url_size_60_60: \"https://...cfff05bbb_S.0_0_299_299.jpg\",\n    url_size_200_200: \"https://...ff05bbb_M.0_0_299_299.jpg\"\n}\n```\n\n## getPublished(params, callback(error, data))\n\n### params\n\n* `profileId`\n* `featureId` - Values are `'music'`, `'neanderthal'`, `'maternal'`, `'paternal'`, `'composition'`\n* `linkId` - Optional. Filters results to just one link.\n\n### data\n\n```javascript\n{\n    id: \"c4480ba411939067\",\n    url: \"https://www.23andme.com/published/.../\",\n    link_id: \"925v3n92424g4\",\n    feature_id: \"neanderthal\",\n    status: \"unpublished\"\n}\n```\n\n## getIntroduction(params, callback(error, data))\n\n### params\n\n\n* `profileId`\n* `matchId`\n\n### data\n\n```javascript\n{\n    introduction: {\n      status: \"received\",\n      visibility: \"genome\",\n      message_text: \"Hi! Want to explore?\"\n    },\n    can_send: false\n}\n```\n\n## getGenotypes(params, callback(error, data))\n\n### params\n\n\n* `profileId`\n* `locations` - An array of SNP strings. \n* `unfiltered` - Optional. Possible values are `true` or `false`\n\n### data\n\n```javascript\n{\n    i3000001: \"II\",\n    rs3094315: \"AA\"\n    id: \"c4480ba411939067\"\n}\n```\n\n## getGenomes(params, callback(error, data))\n\n### params\n\n* `profileID`\n* `unfiltered` - Optional. Possible values are `true` or `false`\n\n### data\n\n```javascript\n{\n    id: \"c4480ba411939067\",\n    genome: \"ACTAGTAG__TTGADDAAIICCTT\" // ... (2MB string!)\n}\n```\n\n## getHaplogroups(params, callback(error, data))\n\n### params\n\n* `profileId`\n\n### data\n\n```javascript\n{\n    maternal_terminal_snps: [\n        {\n            rsid: \"i3001424\",\n            rcrs_position: \"15874\"\n        },\n        {\n            rsid: \"i5050411\",\n            rcrs_position: \"15874\"\n        }\n    ],\n    paternal_terminal_snps: [\n        {\n            \"rsid\": \"i3000015\",\n            \"snp\": \"M125\"\n        }\n    ],\n    maternal: \"D4e2\",\n    paternal: \"D2a1\",\n    id: \"c4480ba411939067\"\n}\n```\n## getAncestry(params, callback(error, data))\n\n### params\n\n* `profileId` \n* `threshold` - A number in the interval (0.5, 1.0) exclusive. Default is 0.75.\n\n### data\n\n```javascript\n{\n    id: \"7ad467ea509080fb\"\n    ancestry: {\n        label: \"Total\",\n        proportion: 1.0,\n        unassigned: 0.0,\n        sub_populations: [\n            {\n                label: \"Sub-Saharan African\",\n                proportion: 0.8227\n            },\n            {\n                label: \"European\"\n                proportion: 0.1773,\n                unassigned: 0.0193,\n                sub_populations: [\n                    {\n                        label: \"Northern European\",\n                        proportion: 0.1579,\n                        unassigned: 0.0725,\n                        sub_populations: [\n                            {\n                                label: \"French and German\",\n                                proportion: 0.0676\n                            }, ...\n                        ],\n                    }, ...\n                ]\n            }, ...\n        ]\n    }\n}\n```\n\n## getNeanderthal(params, callback(error, data))\n\n### params\n\n* `profileId` \n\n### data\n\n```javascript\n{\n    id: \"7ad467ea509080fb\"\n    neanderthal: {\n        proportion: 0.0310,\n    }\n}\n```\n\n## getRelatives(params, callback(error, data))\n\n### params\n\n* `profileId`\n* `filters` - An object with properties `limit`, `offset`, `since`, `share_status`, `intro_status`.\n\n`share_status` can have the following values: `'Owned Profile'`, `'Sharing Genomes'`, `'Public Match'`\n\n`intro_status` can have the following values: `'Introduction Sent'`, `'Introduction Received'`, `'Introduction Accepted'`, `'Introduction Declined'`, `'Introduction Cancelled'`\n\n### data\n\n```javacsript\n{\n    id: \"18974891hh1f3h\",\n    count: 10,\n    relatives: [\n        {\n            match_id: \"48f2489h294hf\",\n            first_name: \"Aodh\",\n            last_name: \"O'Donnell\",\n            sex: \"Male\",\n            birth_year: 1977,\n            birthplace: \"United States\",\n            ancestry: \"Northern Europe\",\n            family_locations: [\n                \"Arlington, VA\",\n                \"County Louth, Ireland\"\n            ],\n            family_surnames: [\n                \"Lindell\",\n                \"Dillingham\",\n                \"Kelly\"\n            ],\n            shared_segments: 23,\n            relationship: \"3rd Cousin\",\n            predicted_relationship_code: 32,\n            user_relationship_code: null,\n            range: [\"3rd Cousin\", \"6th Cousin\"],\n            similarity: 0.24,\n            maternal_haplogroup: \"K1b1a1\",\n            paternal_haplogroup: \"G2a5\",\n            maternal_side: false,\n            paternal_side: true,\n            notes: \"we have the same familiar surnames\",\n            added: 1348699925,\n            updated: 1348699975,\n            residence: \"North Carolina\",\n            intro_status: \"Introduction Accepted\",\n            share_status: \"Sharing Genomes\",\n            profile_picture_urls: {\n                url_size_40_40: \"https://...cfff05bbb_T.0_0_299_299.jpg\",\n                ...\n            }\n        }, ...\n    ]\n}\n```\n\n## getRisks(params, callback(error, data))\n\n### params\n\n* `profileId`\n\n### data\n\n```javascript\n{\n    id: \"c4480ba411939067\",\n    risks: [\n        {\n            description: \"Atrial Fibrillation\",\n            report_id: \"atrialfib\",\n            population_risk: 0.2715,\n            risk: 0.4164\n        },\n        {\n            description: \"Prostate Cancer\",\n            report_id: \"prostate\",\n            population_risk: 0.1783,\n            risk: 0.2585\n        }, ...\n    ]\n}\n```\n\n## getCarriers(params, callback(error, data))\n\n### params\n\n* `profileId`\n\n### data\n\n```javascript\n{\n    id: \"c4480ba411939067\",\n    drug_responses: [\n        {\n            description: \"Alcohol Consumption, Smoking and Risk of Esophageal Cancer\",\n            report_id: \"alcohol_esophageal_pgx\",\n            status: \"typical\"\n        },\n        {\n            description: \"Response to Hepatitis C Treatment\",\n            report_id: \"hepc_peginf_ribavirin\",\n            status: \"reduced\"\n        }, ...\n    ]\n}\n```\n\n## getTraits(params, callback(error, data))\n\n### params\n\n* `profileId`\n\n### data\n\n```javascript\n{\n    i\"d: \"c4480ba411939067\",\n    traits: [\n        {\n            description: \"Muscle Performance\",\n            report_id: \"muscleperformance\",\n            possible_traits: [\n                \"Likely Sprinter\",\n                \"Unlikely Sprinter\"\n            ],\n            trait: \"Unlikely Sprinter\"\n        },\n        {\n            description: \"Resistance to HIV/AIDS\",\n            report_id: \"hiv\",\n            possible_traits: [\n                \"Not Resistant\",\n                \"Partially Resistant\"\n            ],\n            trait: \"Not Resistant\"\n        }, ...\n    ],\n}\n```\n\n## postProfilePicture(params, callback(error, data))\n\n### params\n\n* `profileId`\n* `image` - A buffer.\n\n## postPublish(params, callback(error, data))\n\n### params\n\n* `profileId`\n* `featureId` - Values are `'music'`, `'neanderthal'`, `'maternal'`, `'paternal'`, `'composition'`\n\n## putPublish(params, callback(error, data))\n\n### params\n\n* `profileId`\n* `featureId` - Values are `'music'`, `'neanderthal'`, `'maternal'`, `'paternal'`, `'composition'`\n* `linkId`\n* `status` - Values are `'published'` or `'unpublished'`\n\n## patchIntroduction(params, callback(error, data))\n\n### params\n\n* `profileId`\n* `matchId`\n* `status` - Possible values are `'accepted'`, `'rejected'`, `'read'`, `'cancelled'`.\n* `visibility` - Possible values are `'anonymous'`, `'profile'`, `'genome'`\n\nAt least one of `status` and `visibility` has to be provided as parameters.\n\n## patchRelatives(params, callback(error, data)) \n\n### params\n\n* `profileId`\n* `matchId`\n* `notes` - A string.\n* `relationshipCode`\n\nPossible values for `relationshipCode`:\n\n`0` You\n\n`1` Identical Twin\n\n`2` Father\n\n`3` Mother\n\n`4` Son\n\n`5` Daughter\n\n`6` Brother\n\n`7` Sister\n\n`8` Half Brother\n\n`9` Half Sister\n\n`10` Grandfather\n\n`11` Grandmother\n\n`12` Grandson\n\n`13` Granddaughter\n\n`14` Uncle\n\n`15` Aunt\n\n`16` Nephew\n\n`17` Niece\n\n`18` Great Grandfather\n\n`19` Great Grandson\n\n`20` Great Grandmother\n\n`21` Great Granddaughter\n\n`22` Great Uncle\n\n`23` Great Aunt\n\n`24` Great Nephew\n\n`25` Great Niece\n\n`26` 1st Cousin\n\n`27` 1st Cousin, Once Removed\n\n`28` 1st Cousin, Twice Removed\n\n`29` 2nd Cousin\n\n`30` 2nd Cousin, Once Removed\n\n`31` 2nd Cousin, Twice Removed\n\n`32` 3rd Cousin\n\n`33` 3rd Cousin, Once Removed\n\n`34` 3rd Cousin, Twice Removed\n\n`35` 4th Cousin\n\n`38` 5th Cousin\n\n`41` 6th Cousin\n\n`44` Distant Cousin\n\n# TODO\n\n* Tests","maintainers":[{"name":"crzrcn","email":"fernanlink@gmail.com"}],"time":{"modified":"2022-06-12T14:06:41.099Z","created":"2013-11-23T14:13:05.001Z","0.0.1":"2013-11-23T14:13:06.678Z"},"author":{"name":"Fernando Martinez","url":"crzrcn"},"repository":{"type":"git","url":"https://github.com/crzrcn/23andme-node"}}