Skip to content
Insights · Engineering

Which person did that repository add?

Name the person that repository added: the id, the login, and the permission. A different invite can name another login. Another repository omits it.

Scroll
EngineeringOct 30, 202612 min readBy Salman Naqvi, Founder & CEO
Which person did that repository add?

A client says a stranger can push, or says the person who was added never received the invite. Tonight, three proofs, in a repository the agency or the client can open. Name the person that repository added: the invitation id or the user id, the login, and the permission. If the list is empty, write that, and do not invent a login to fill the hole. Show a different person whose id, or whose login, is not this one. Show another client's repository that does not list this person. If any of the three needs the person who clicked invite, you have not named the person. You have a screenshot and a guess.

This is one collaborator on one repository. It is not the role an organization invitation granted. Which role did that invite grant? is an invitation id, a role, and an email or a user id. An organization role can be right while this repository still has not stored the login. It is not the team a member joined. Which team did that member join? is a team id and a membership. A team can include a person this repository's collaborator list does not name. It is not the rate a shipment named. Which rate did that shipment name? is a shipping rate id and an amount. It is not the output a response held. Which output did that response hold? is an item id and a type. A login is not an output id.

None of what follows is a permission on the client's repository, and none of it is legal advice. The rules below are the current collaborator endpoints. The JSON below is the example on the Enterprise Server 3.0 page, which still prints the body the current page's schema does not. The figures after that are a 2014 study of other people's public projects. A count of someone else's forks is not the login in the repository you opened.

The current list does not print a person, and the old example prints one. Affiliation is outside, direct, or all. Three names. The default is all. The permission filter is pull, triage, triage_plus, push, maintain, or admin. Six names. 3 is not 6. per_page defaults to 30 and the maximum is 100. page defaults to 1. A 200 returns the list. A 404 means the repository was not found. The current page does not print a login inside that 200. The Enterprise Server 3.0 list example is an array of 1. login is octocat. 7 characters. id is 1. node_id is MDQ6VXNlcjE=. 12 characters. permissions on that object are pull true, push true, and admin false. Three keys. triage, maintain, and role_name are not in that object. The current schema says role_name is required. The example does not print it. 1 row is not the default 30, and 30 is not 100 (GitHub, REST API endpoints for collaborators).

Checking whether a user is a collaborator returns a status and no person. The current page says 204 if the user is a collaborator and 404 if the user is not. The 3.0 page says the same pair. A 204 has no JSON. A status with no login is not a login. 204 is not 201, and 404 is not an id of 1. The path in the 3.0 curl uses the placeholder USERNAME. 8 characters. octocat is 7. 8 is not 7. Do not treat an empty 204 as proof you have named the person, and do not treat a 404 as a permission. The absence is the record. Write the status next to the login you asked about, or you have mixed a missing user with a missing repository.

Adding a person is two different successes, and only one of them has a body. The current page says 201 when a new invitation is created, and 204 when an existing collaborator is added, when an organization member is added as an individual collaborator, or when an existing team member is added as an individual collaborator. Three 204 cases, one empty response. The permission parameter defaults to push. 4 characters. The accepted names are pull, triage, triage_plus, push, maintain, and admin. Six names again. The illustrated request on the current page sends triage, not the default. triage is 6 characters. triage_plus is 11. push is 4. 6 is not 4. You are limited to 50 invitations to a repository per 24 hour period. There is no limit when the invitee is already an organization member and the repository is owned by that organization. 50 is not 24. 24 is not 201. The page does not print a JSON login beside that 201 (GitHub, REST API endpoints for collaborators).

The 3.0 invitation sample prints a body the current schema page does not, and the body does not match the default. id is 1. node_id is MDEwOlJlcG9zaXRvcnkxMjk2MjY5. 28 characters, the same string as the nested repository node_id, and not the user node_id of 12. repository id is 1296269. 1 is not 1296269. name is Hello-World. 11 characters. The 3.0 request path uses hello-world. 11 characters, the same length, and not the same string. The current page says the name is not case sensitive, which is a rule about lookup, not a claim that the two strings are equal. full_name is octocat/Hello-World. 19 characters. 19 is not 11. description is This your first repo! 21 characters. permissions is the string write. 5 characters. admin is also 5, and it is not the same string. write is not one of the six names on the current page. push, the current default, is 4. 5 is not 4. created_at is 2016-06-13T14:52:50-05:00. 25 characters. The clock ends in 50 seconds. The rate limit is 50 invitations. The html url is 50 characters. Three different 50s. The page does not print that they match as digits and differ as fields. The invitation url is 58 characters and ends in 1296269, which is the repository id, not the invitation id 1. The hooks url is 53 characters and begins with http://. The other sample urls on that object begin with https://. 53 is not 50. invitee, inviter, and the repository owner are each login octocat, id 1, node_id of 12 characters. Three copies of one person. A sample that invites the owner, as the owner, is not a second login (GitHub, Collaborators).

Padhye, Mani, and Sinha counted other projects, which is not this login. They analyze 89 top-starred GitHub projects. The introduction says 108,000+ forks. The data section says 108,629 forks. 108,629 is not 108,000. The gap is 629, which the paper does not print. Of those forks, 18,343 had at least one commit. 108,629 minus 18,343 is 90,286, which the paper does not print. The roots and forks account for 548,299 commits by 23,237 distinct users. 548,299 divided by 89 is not an integer the paper prints. 12,635 users, which the paper states as 54.37%, had entered some location. Dividing 12,635 by 23,237 rounds to the percentage the paper already prints. The paper does not print the unrounded quotient. 89 is not 1, and 23,237 is not the sample user id. A fork count is not a collaborator login, and a 2014 public-project census cannot name the person on the private repository you opened this afternoon (Padhye, Mani, and Sinha, A Study of External Community Contribution to Open-Source Projects on GitHub).

Cove is one operator platform, distinct from the next client. It is not a collaborator ledger. No headcount, duration, or result figure belongs in that sentence. Cove does not supply the login octocat, and it does not supply invitation id 1.

When the engagement is real and the repository cannot name the person, the missing object is specific. A record the agency or the client can open, that shows one id, one login, and one permission, shows a different person that is not that one, and shows another client's repository without it. A white label software development partner that expects this will have that list in the client's repository, under the agency's process, before a stranger's push is the way the client discovers who was added. One that needs a call in order for the agency to see the login is telling you who holds the access. The partner does not keep a private copy of the client's access list as the only copy. If you do not yet know which host stores the people, a two-week AI readiness assessment maps the systems. The findings are yours. They are not a promise that 54.37% of your collaborators filled in a location.

There is a version of this week where taking the work is the wrong purchase. The work is not sold under the agency's name. The client asked to meet the builders. The room only has a slide. The buyer only wants a template. Or the buyer wants a legal opinion on whether an outside collaborator is allowed. None of those is a missing login. The sample's octocat will not become your client's login because the example was famous, and a 204 with no body will not become a permission of write because an older page stored that string.

Before you tell them which person the repository added, do the three proofs and write the name. Name the id, the login, and the permission, or write that the list was empty. Show a different person that is not that one. Show another client's repository that does not hold it. Do not paste 89 projects, or user id 1, and call it the grant. The current page's new invitation is a 201. The published example that actually prints a login prints one person, three times. Your repository has to print the one you mean.

Questions

Three records, in a repository the agency or the client can open. The invitation id or the user id, the login, and the permission, or a written line that the list was empty. A different person whose id or login is not this one. Another client's repository that does not list this person. A 204 with no body is not a login.

No. A count of other people's projects is not the login on this repository. A person you can defend is the id, the login, and the permission, or a written line that no person was stored. 89 in one study is not login octocat, and 1 on a sample is not your client's user.

When the work is not sold under the agency's name, when the client asked to meet the builders, when the room only has a slide, when the buyer only wants a template, or when the buyer wants a legal opinion.

Find this useful? Tell Google to show you more of it.

Let's put AI to work in your business.

A 30-minute call. You bring the workflow or the roadmap — we'll tell you what's feasible, what it costs, and what we'd build first.

Book a call→