Register an assistant client
/v1/assistant/oauth/registerRegisters an assistant client so that it can ask you to connect, and returns its client_id. It is the standard client registration request, and needs no sign-in. A client has no secret: it proves itself with a PKCE code challenge when it signs in.
Every redirect_uris entry must be an https address, or a loopback address (localhost, 127.0.0.1 or the IPv6 loopback address), without a fragment or a user name, and the host must be one Flowion accepts. Only none is accepted as token_endpoint_auth_method, and fields the endpoint doesn't know are ignored. The client_name you send is shown to people on the consent page, so it is stored and shown as plain text only.
Registering does not give access to anything. A person still has to approve the connection.
Authorization
Authorizationheader · stringrequiredBearer <token>, with an ID token from a console sign-in or an API key (flw_ak_…). How authentication works
Request body
client_namestringnullablegrant_typesarray of stringnullableredirect_urisarray of stringresponse_typesarray of stringnullabletoken_endpoint_auth_methodstringnullable
Responses
The client is registered.
client_idstringrequiredclient_id_issued_atintegerrequiredclient_namestringrequiredgrant_typesarray of stringrequiredredirect_urisarray of stringrequiredresponse_typesarray of stringrequiredtoken_endpoint_auth_methodstringrequired
Headers
RateLimit-Limitheader · stringRateLimit-Remainingheader · stringRateLimit-Resetheader · string
invalid_redirect_uri or invalid_client_metadata.
errorstringrequirederror_descriptionstringrequired
Too many requests. Wait the number of seconds in Retry-After, then try again.
errorstringrequirederror_descriptionstringrequired
Something went wrong on our side. Try again, and if it keeps happening, contact support with the response's requestId.
errorenumrequiredA stable code for the error. Switch on this value: it doesn't change between releases.One ofaccountHasOpenBalanceaccountNotReadyalreadyStartedambiguousIdTokenambiguousReservationAddressassetServiceUnavailableassistantCardRequiredassistantDisabledassistantLimitReachedinstallerPhotoDayLimitinstallerPhotoConversationLimitassistantNotEnabledassistantRouteNotAllowedassistantUnavailableauthenticationRequiredauthorizationUnavailablebadRequestbatchTooLargebillingAccountClosedbillingAccountSuspendedbillingNotConfiguredbillingServiceUnavailablecannotDeleteDefaultcapacityExceededcardAlreadyHeldcardBlockedcardOwnedByPrincipalcertificateAuthorityServiceUnavailablechargerUnsafeForHoldcircuitChosenTwicecircuitNotFoundcircuitNotOnJobLocationchargerNotRunningchargePointIdTakenchargerSplitAcrossLocationschargingStationNotAcceptedclaimNotEligibleclaimNotFoundcommandNotSupportedcommandTypeRemovedcommandsUnavailableconflictconfirmationInvalidconfirmationLockedconfirmationNotSentconfirmationRequiredconfirmEraseRequiredconsentMissingconversationClosedconversationBusyconnectionNotEligibleconnectorAlreadyOccupiedconnectorNotFoundconnectorNotOccupiedconfirmOverPlanRequiredcsmsManagedSettingdeclineddiagnosticsReceiverServiceUnavailablediagnosticsRequestOutstandingdiagnosticsUnsupportedProtocolVersiondisconnectedduplicateeaseeCircuitUnmappedeaseeSiteClaimedElsewhereeaseeUnreachableeaseeWrongSerialOrPinemailNotVerifiedemptyEventTypesemptyLimitemptyTransactionLimitenergyControllerUnavailableenergyPricingServiceUnavailableeventTypeNotSubscribableexceedsCapabilityfileExpiredfileNotAvailablefirmwareIdentityUnknownforbiddenhandoverNotReadyhasChildCircuitsholdAmountOutOfRangeholdNotAuthorizedidTokenNotAcceptedidTokenNotRecoverableidempotencyKeyConflictidempotencyKeyInFlightidempotencyKeyReplayedidempotencyStoreUnavailableintegrationEaseeServiceUnavailableintegrationUnavailableconnectionsServiceUnavailableinternalErrorinvalidinvalidAddressinvalidAppDestinationinvalidClientinvalidCoordinatesinvalidCountryinvalidCurrentTypeinvalidEvsesinvalidCursorinvalidErrorCodeinvalidIdTokeninvalidLineinvalidModeinvalidMonitorAssignmentinvalidMonitorConnectioninvalidNameinvalidPaginationinvalidRedirectUriinvalidReasoninvalidPhaseCountinvalidRequestinvalidImageimageTooLargeinvalidWindowmethodNotUsablenotAPaidChargernotCapturedoverRefundpaymentRequiredrevisionConflictinvalidScheduleinvalidScopeinvalidSettingValueinvalidLocationTargetinvalidSluginvalidStartingSocinvalidTargetSocinvalidTargetinvalidTargetUrlinvalidTariffinvalidTariffConditioninvalidTariffIdinvalidTimeZoneinvalidUrlinvalidValueinstallerNotHeldinvitationAlreadyAcceptedinvitationExpiredjobsServiceUnavailableopenJobsservesCustomerGrantsnotAnInstallationsProjectgrantNotActivelastCircuitOnLocationlocationUnderInstallationlocationNotBuiltlocationAlreadyBuiltmetricsStoreErrormetricsStoreUnavailablemessageTooLongmissingIdTokenmissingIdempotencyKeymonitorConflictmonitorNotFoundmqttServiceUnavailablemissingOrMalformedHeaderinvalidTokenjwksUnavailableapiKeyServiceUnavailablenotConnectednotDispatchablenotEntitledassigneeCannotReadJobnotFoundnotReadynotSandboxModenoFirmwareCatalogednoOpenSessionnoSupportedTransferProtocolnoVehicleocppUnavailableorganizationNotEmptyownerCannotLeaveownsOrganizationspaymentMethodRequiredbinding.driver_policy_requires_access_permissionbinding.holder_outside_home_projectpermission_policy.deny_not_allowedpermission_policy.deny_on_owner_floorpermission_policy.in_usepermission_policy.invalid_documentpermission_policy.limit_exceededpermission_policy.managed_immutablepermission_policy.management_permission_for_non_memberpermission_policy.name_takenpermission_policy.not_grantablepermission_policy.unknown_permissionpermission_policy.would_remove_last_editorpaymentsAccountNotFoundpaymentsAccountSubmittedpaymentsOrganizationSyntheticpaymentsUnavailablephaseTopologyNotConfirmedprincipalErasedprincipalInactiveprincipalNotFoundprojectNotFoundproposalAlreadyDecidedprotocolErrorrateLimitErrorrateLimitedratedCurrentNotPositivereferenceTakensandboxOrganizationChargerLimitReachedsandboxProjectChargerLimitReachedsandboxStationRefusedselfParentsellerUnavailableserviceUnavailablesessionServiceUnavailablestationOfflinesigningSecretTooShortsiteClaimedElsewheresiteOwnedByAnotherEaseeOperatorslugChangeNotAcknowledgedslugTakenspotCurrencyMismatchtariffEnergyAndSpottimeZoneRequiredtimedOutscopeNotGrantedscopeTooLargewindowEndedwindowTooLongsessionCapExceededinvalidMonthmonthTooLargemixedCurrenciesmonthNotClosablemonthHasOpenHoldsmonthAlreadyClosedmonthNotClosedoutcomeFinalmonthClosednotCarriabletargetMonthClosedsettlementServiceUnavailabletransactionAlreadyOpentransactionNotOpenunauthorizedunavailableunintelligibleResponseunknownBiddingZoneunknownChargerModelunknownEventTypeunknownFallbackStatusunknownSerialunknownVariableunknownVehicleModelunprocessableunrecognisedApiKeyModeunrecognisedSessionModeunsupportedvendorManagedFirmwarevendorUnreachablevirtualChargerLimitReachedvirtualChargerOrganizationLimitReachedvirtualChargerServiceUnavailablevirtualChargerStateUnavailablewebhookServiceUnavailablewrongPinmessagestringrequiredA description for people. Its wording may change, so don't parse it.requestIdstringThis request's id, the same as thex-request-idresponse header. Quote it when you contact support.
The sign-in service isn't available right now. Try again shortly.
errorstringrequirederror_descriptionstringrequired
Headers
Retry-Afterheader · string