# Login Sessions ## Create bridge login session `$client->bridges->loginSessions->create(string bridgeID, ?string accountID, ?string flowID, ?string loginID): LoginSession` **post** `/v1/bridges/{bridgeID}/login-sessions` Start a temporary bridge login session to connect a new chat account or reconnect an existing bridge login. Omit loginID and accountID to connect a new account. ### Parameters - `bridgeID: string` Bridge ID. - `accountID?:optional string` Existing chat account ID to reconnect. Omit to connect a new account. - `flowID?:optional string` Optional flow ID returned by the list login flows endpoint. If omitted, Beeper chooses the default flow. - `loginID?:optional string` Existing bridge login ID to reconnect. Omit to connect a new account. ### Returns - `LoginSession` - `string bridgeID` Bridge ID. - `string loginSessionID` Temporary bridge login session ID. - `Status status` - `?Account account` A chat account added to Beeper. - `?string accountID` Chat account ID for reconnect flows, when known. - `?CurrentStep currentStep` Step the client should show or complete next. Omitted when the session is complete, cancelled, or failed. - `?APIError error` - `?Login login` Signed-in identity for a bridge. One bridge login can contain multiple chat accounts. - `?string loginID` Bridge login ID for reconnect flows, when known. ### Example ```php bridges->loginSessions->create( 'local-whatsapp', accountID: 'x', flowID: 'x', loginID: 'x' ); var_dump($loginSession); ``` #### Response ```json { "bridgeID": "bridgeID", "loginSessionID": "loginSessionID", "status": "waiting_for_input", "account": { "accountID": "accountID", "bridge": { "id": "id", "provider": "cloud", "type": "type" }, "status": "connected", "user": { "id": "id", "cannotMessage": true, "email": "email", "fullName": "fullName", "imgURL": "imgURL", "isSelf": true, "phoneNumber": "phoneNumber", "username": "username" }, "capabilities": { "foo": "bar" }, "loginID": "loginID", "network": "network", "statusText": "statusText" }, "accountID": "accountID", "currentStep": { "fields": [ { "id": "id", "initialValue": "initialValue", "label": "label", "optional": true, "placeholder": "placeholder", "type": "type" } ], "stepID": "stepID", "type": "user_input", "attachments": [ {} ], "instructions": "instructions" }, "error": { "code": "code", "message": "message", "details": { "foo": "bar" } }, "login": { "bridgeID": "bridgeID", "loginID": "loginID", "removeScopes": [ "current-device" ], "status": "connected", "accountIDs": [ "string" ], "statusText": "statusText", "user": { "id": "id", "cannotMessage": true, "email": "email", "fullName": "fullName", "imgURL": "imgURL", "isSelf": true, "phoneNumber": "phoneNumber", "username": "username" } }, "loginID": "loginID" } ``` ## Get bridge login session `$client->bridges->loginSessions->retrieve(string loginSessionID, string bridgeID): LoginSession` **get** `/v1/bridges/{bridgeID}/login-sessions/{loginSessionID}` Get the current state of a temporary bridge login session. ### Parameters - `bridgeID: string` Bridge ID. - `loginSessionID: string` Temporary bridge login session ID. ### Returns - `LoginSession` - `string bridgeID` Bridge ID. - `string loginSessionID` Temporary bridge login session ID. - `Status status` - `?Account account` A chat account added to Beeper. - `?string accountID` Chat account ID for reconnect flows, when known. - `?CurrentStep currentStep` Step the client should show or complete next. Omitted when the session is complete, cancelled, or failed. - `?APIError error` - `?Login login` Signed-in identity for a bridge. One bridge login can contain multiple chat accounts. - `?string loginID` Bridge login ID for reconnect flows, when known. ### Example ```php bridges->loginSessions->retrieve( '123', bridgeID: 'local-whatsapp' ); var_dump($loginSession); ``` #### Response ```json { "bridgeID": "bridgeID", "loginSessionID": "loginSessionID", "status": "waiting_for_input", "account": { "accountID": "accountID", "bridge": { "id": "id", "provider": "cloud", "type": "type" }, "status": "connected", "user": { "id": "id", "cannotMessage": true, "email": "email", "fullName": "fullName", "imgURL": "imgURL", "isSelf": true, "phoneNumber": "phoneNumber", "username": "username" }, "capabilities": { "foo": "bar" }, "loginID": "loginID", "network": "network", "statusText": "statusText" }, "accountID": "accountID", "currentStep": { "fields": [ { "id": "id", "initialValue": "initialValue", "label": "label", "optional": true, "placeholder": "placeholder", "type": "type" } ], "stepID": "stepID", "type": "user_input", "attachments": [ {} ], "instructions": "instructions" }, "error": { "code": "code", "message": "message", "details": { "foo": "bar" } }, "login": { "bridgeID": "bridgeID", "loginID": "loginID", "removeScopes": [ "current-device" ], "status": "connected", "accountIDs": [ "string" ], "statusText": "statusText", "user": { "id": "id", "cannotMessage": true, "email": "email", "fullName": "fullName", "imgURL": "imgURL", "isSelf": true, "phoneNumber": "phoneNumber", "username": "username" } }, "loginID": "loginID" } ``` ## Cancel bridge login session `$client->bridges->loginSessions->cancel(string loginSessionID, string bridgeID): LoginSessionCancelResponse` **delete** `/v1/bridges/{bridgeID}/login-sessions/{loginSessionID}` Cancel a temporary bridge login session. ### Parameters - `bridgeID: string` Bridge ID. - `loginSessionID: string` Temporary bridge login session ID. ### Returns - `LoginSessionCancelResponse` - `string bridgeID` - `string loginSessionID` - `"cancelled" status` ### Example ```php bridges->loginSessions->cancel( '123', bridgeID: 'local-whatsapp' ); var_dump($response); ``` #### Response ```json { "bridgeID": "bridgeID", "loginSessionID": "loginSessionID", "status": "cancelled" } ``` # Steps ## Submit login step `$client->bridges->loginSessions->steps->submit(string stepID, string bridgeID, string loginSessionID, Type type, ?array fields, ?string lastURL, ?Source source): LoginSession` **post** `/v1/bridges/{bridgeID}/login-sessions/{loginSessionID}/steps/{stepID}` Submit input for the current step of a bridge login session. ### Parameters - `bridgeID: string` Bridge ID. - `loginSessionID: string` Temporary bridge login session ID. - `stepID: string` Current bridge login session step ID. - `type: Type` - `fields?:optional array` Field values keyed by the field IDs from the current step. - `lastURL?:optional string` Last browser URL reached during a cookies step, if available. - `source?:optional Source` How the step was completed. Omit unless the client needs to distinguish an embedded webview or browser extension. ### Returns - `LoginSession` - `string bridgeID` Bridge ID. - `string loginSessionID` Temporary bridge login session ID. - `Status status` - `?Account account` A chat account added to Beeper. - `?string accountID` Chat account ID for reconnect flows, when known. - `?CurrentStep currentStep` Step the client should show or complete next. Omitted when the session is complete, cancelled, or failed. - `?APIError error` - `?Login login` Signed-in identity for a bridge. One bridge login can contain multiple chat accounts. - `?string loginID` Bridge login ID for reconnect flows, when known. ### Example ```php bridges->loginSessions->steps->submit( 'x', bridgeID: 'local-whatsapp', loginSessionID: '123', type: 'user_input', fields: ['foo' => 'string'], lastURL: 'lastURL', source: 'api', ); var_dump($loginSession); ``` #### Response ```json { "bridgeID": "bridgeID", "loginSessionID": "loginSessionID", "status": "waiting_for_input", "account": { "accountID": "accountID", "bridge": { "id": "id", "provider": "cloud", "type": "type" }, "status": "connected", "user": { "id": "id", "cannotMessage": true, "email": "email", "fullName": "fullName", "imgURL": "imgURL", "isSelf": true, "phoneNumber": "phoneNumber", "username": "username" }, "capabilities": { "foo": "bar" }, "loginID": "loginID", "network": "network", "statusText": "statusText" }, "accountID": "accountID", "currentStep": { "fields": [ { "id": "id", "initialValue": "initialValue", "label": "label", "optional": true, "placeholder": "placeholder", "type": "type" } ], "stepID": "stepID", "type": "user_input", "attachments": [ {} ], "instructions": "instructions" }, "error": { "code": "code", "message": "message", "details": { "foo": "bar" } }, "login": { "bridgeID": "bridgeID", "loginID": "loginID", "removeScopes": [ "current-device" ], "status": "connected", "accountIDs": [ "string" ], "statusText": "statusText", "user": { "id": "id", "cannotMessage": true, "email": "email", "fullName": "fullName", "imgURL": "imgURL", "isSelf": true, "phoneNumber": "phoneNumber", "username": "username" } }, "loginID": "loginID" } ```