Skip to content

pando login, step 2 (polled): the user and a new machine credential

Poll every interval seconds. Until the person confirms, the answer is 400 with error.code authorization_pending (keep polling) or slow_down (add 5 seconds to the interval). access_denied, expired_token and invalid_grant end the attempt. On success, joined lists the monorepos (owner/name) whose email invites were accepted, and the CLI stores credential.secret in ~/.pando/credentials/<host> (mode 600).

POST
https://app.gitpando.com/v1/login/token

Request bodyJSONrequired

  • device_codestringrequired
  • credential_namestringrequired

    The machine name.

  • kindoptionalmachineorsandbox
    Default: "machine"

Returns

200

Signed in

JSON
  • userobjectrequired
    5 properties
    • loginstringrequired
    • namestring | nullrequired
    • emailstring | nullrequired
    • picture_urlstring | nullrequired

      Their WorkOS profile picture (an https URL of at most 2,048 characters), stored at each sign-in, browser or pando login, and refreshed every time (a removed picture becomes null). Null when there is none or it is not https: the web draws one. Pando never fetches, proxies or caches it.

    • created_atstringrequired
      format: date-time
  • credentialobjectrequired
    7 properties
    • idstringrequired
    • namestringrequired
    • kindmachineorsandboxorbootstraporbrowserrequired
    • created_atstringrequired
      format: date-time
    • secretstringrequired

      pando_ and 40 hex characters. Shown once; Pando keeps only its SHA-256.

    • last_used_atoptionalstring | null
      format: date-time
    • expires_atoptionalstring | null

      Browser sessions only: the end unless used before then (each use pushes it to 30 days).

      format: date-time
  • joinedarray ofstringrequired

400

Not yet, or not at all: error.code is one of the codes above.

JSON
  • errorobjectrequired
    4 properties
    • codestringrequired
    • messagestringrequired
    • pathsoptionalarray ofstring
    • checksoptionalobject

      GitHub's combined status, plus the required contexts and which are missing.

      6 properties
      • shastring | nullrequired
      • statesuccessorpendingorfailureorerrorormissingorunknownrequired

        success when the merge gate passes; missing when a required context has not reported; unknown while the required checks are (an unforced merge is refused).

      • requiredarray | nullrequired

        Null while unknown.

      • checks_unknownstring | nullrequired

        Why the required checks are unknown, in plain words: "Pando couldn't read this monorepo's required checks; try again", or "pando.toml line 3: expected comma or end of structure; fix it on main, or merge with force". Null otherwise.

      • statusesarray ofobjectrequired

        The latest status per context.

        8 properties
        • shastringrequired
        • contextstringrequired
        • statependingorsuccessorfailureorerrorrequired
        • created_atstringrequired
          format: date-time
        • target_urloptionalstring | null
        • descriptionoptionalstring | null
        • creatoroptionalstring

          The member who posted it (a login); app:<slug> for a status posted with a status token or by a CI integration; hook:<hook id> for a status token from a web hook with no app.

        • appoptionalstring | null

          The CI service that reported it (buildkite, github-actions, ...), stamped by Pando from a status token or a CI integration, never from the body or target_url. Null when a member posted it with their own credential. The web shows the service's mark for a slug it knows.

      • missingoptionalarray ofstring
Navigation

Type to search…

↑↓ navigate↵ selectEsc close