Direct
Generated direct operations.
GET/v1/directRead the current direct account and its profilesread
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_direct_account
Responses
200Successapplication/json
{
"account": {
"allowedLibraries": [
"string"
],
"disabled": true,
"disabledAt": "2026-10-18T19:30:00Z",
"disabledReason": "string",
"hostedAccountId": "id_8h2k4q",
"id": "id_8h2k4q",
"primaryProfileId": "id_8h2k4q",
"revision": 0,
"role": "string",
"username": "Fargo"
},
"authority": "string",
"canManage": true,
"capabilities": {
"manageAccount": true,
"managePeople": true,
"manageServer": true,
"manageSignIn": true
},
"custodyPending": true,
"managePinRequired": true,
"profiles": [
{
"allowedLibraries": [
"string"
],
"art": "string",
"id": "id_8h2k4q",
"name": "Fargo",
"pinRequired": true,
"pinRevision": 0,
"position": 0,
"primary": true,
"revision": 0
}
],
"rememberProfiles": true,
"serverId": "id_8h2k4q",
"twoStepSetupRequired": true
}accountobjectrequired
- allowedLibrariesarray of stringrequired
- disabledbooleanrequired
- disabledAtstring
- disabledReasonstring
- hostedAccountIdstring
- idstringrequired
- primaryProfileIdstringrequired
- revisionintegerrequired
- rolestringrequired
- usernamestringrequired
- authoritystringrequired
- canManagebooleanrequired
capabilitiesobjectrequired
- manageAccountbooleanrequired
- managePeoplebooleanrequired
- manageServerbooleanrequired
- manageSignInbooleanrequired
- custodyPendingboolean
- managePinRequiredboolean
profilesarray of objectrequired
- allowedLibrariesarray of stringrequired
- artstringrequired
- idstringrequired
- namestringrequired
- pinRequiredbooleanrequired
- pinRevisionintegerrequired
- positionintegerrequired
- primarybooleanrequired
- revisionintegerrequired
- rememberProfilesbooleanrequired
- serverIdstringrequired
- twoStepSetupRequiredboolean
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizedpassword_change_requiredinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/direct" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/direct/membersRead account membersadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
get_direct_members
Responses
200Successapplication/json
{
"items": [
{
"allowedLibraries": [
"string"
],
"disabled": true,
"disabledAt": "2026-10-18T19:30:00Z",
"disabledReason": "string",
"hostedAccountId": "id_8h2k4q",
"id": "id_8h2k4q",
"primaryProfileId": "id_8h2k4q",
"revision": 0,
"role": "string",
"username": "Fargo"
}
]
}itemsarray of objectrequired
- allowedLibrariesarray of stringrequired
- disabledbooleanrequired
- disabledAtstring
- disabledReasonstring
- hostedAccountIdstring
- idstringrequired
- primaryProfileIdstringrequired
- revisionintegerrequired
- rolestringrequired
- usernamestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/direct/members" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/direct/membersRun account membersadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
post_direct_members- Max body
- 64 KiB
Request body application/json · required
{
"allowedLibraries": [
"string"
],
"name": "Fargo",
"password": "string",
"username": "Fargo"
}- allowedLibrariesarray of stringrequired
- namestringrequired
- passwordstringrequired
- usernamestringrequired
Responses
201Successapplication/json
{
"allowedLibraries": [
"string"
],
"disabled": true,
"disabledAt": "2026-10-18T19:30:00Z",
"disabledReason": "string",
"hostedAccountId": "id_8h2k4q",
"id": "id_8h2k4q",
"primaryProfileId": "id_8h2k4q",
"revision": 0,
"role": "string",
"username": "Fargo"
}- allowedLibrariesarray of stringrequired
- disabledbooleanrequired
- disabledAtstring
- disabledReasonstring
- hostedAccountIdstring
- idstringrequired
- primaryProfileIdstringrequired
- revisionintegerrequired
- rolestringrequired
- usernamestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/members" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"allowedLibraries":["string"],"name":"Fargo","password":"string","username":"Fargo"}'DELETE/v1/direct/members/{id}Delete a member, their profiles, devices and saved dataadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
delete_direct_member- Max body
- 4 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/json · required
{
"expectedRevision": 0
}- expectedRevisionintegerrequired
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinvalid_requestnot_foundrevision_mismatchinternalrevision_requireddatabase_busywriter_capacity
Example request
curl -X DELETE "http://127.0.0.1:32500/v1/direct/members/{id}" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":0}'PATCH/v1/direct/members/{id}Change account membersadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
patch_direct_members_id- Max body
- 64 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/json · required
{
"allowedLibraries": [
"string"
],
"disabled": true,
"expectedRevision": 0,
"name": "Fargo",
"username": "Fargo"
}- allowedLibrariesarray of stringrequired
- disabledbooleanrequired
- expectedRevisionintegerrequired
- namestringrequired
- usernamestringrequired
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X PATCH "http://127.0.0.1:32500/v1/direct/members/{id}" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"allowedLibraries":["string"],"disabled":true,"expectedRevision":0,"name":"Fargo","username":"Fargo"}'GET/v1/direct/members/{id}/deletion-previewRead what deleting a member will removeadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
get_direct_member_deletion_preview
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"accountId": "id_8h2k4q",
"devices": 0,
"notes": "string",
"playlists": 0,
"playsKept": 0,
"porticoAccount": true,
"profiles": 0,
"revision": 0,
"role": "string",
"savedResources": 0,
"username": "Fargo"
}- accountIdstringrequired
- devicesintegerrequired
- notesstring
- playlistsintegerrequired
- playsKeptintegerrequired
- porticoAccountbooleanrequired
- profilesintegerrequired
- revisionintegerrequired
- rolestringrequired
- savedResourcesintegerrequired
- usernamestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinvalid_requestnot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/direct/members/{id}/deletion-preview" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/direct/members/{id}/devices/{deviceId}/sign-outSign out one or all devices belonging to a personadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
post_direct_member_device_sign_out- Max body
- 4 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
deviceIdrequired | path | string |
Request body application/json · required
{}object
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinvalid_requestnot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/members/{id}/devices/{deviceId}/sign-out" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'POST/v1/direct/members/{id}/devices/sign-outSign out one or all devices belonging to a personadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
post_direct_member_devices_sign_out- Max body
- 4 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/json · required
{}object
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinvalid_requestnot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/members/{id}/devices/sign-out" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'POST/v1/direct/members/{id}/reset-codeReset account accesssession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
post_direct_members_id_reset_code- Max body
- 4 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/json · required
{
"expectedRevision": 0,
"originalResetCode": "string",
"turnOffTwoStep": true
}- expectedRevisionintegerrequired
- originalResetCodestringlength 43–43pattern ^[A-Za-z0-9_-]{43}$
- turnOffTwoStepboolean
Responses
200Successapplication/json
{
"code": "string",
"expiresAt": "2026-10-18T19:30:00Z",
"serverId": "id_8h2k4q"
}- codestringrequired
- expiresAtstringrequired
- serverIdstring
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternalrate_limitedprofile_changeddatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/members/{id}/reset-code" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":0,"originalResetCode":"string","turnOffTwoStep":true}'POST/v1/direct/ownershipRun account ownershipsession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
post_direct_ownership- Max body
- 64 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
X-Portico-Installation-Id | header | string |
Request body application/json · required
{
"accountId": "id_8h2k4q",
"currentPassword": "string",
"expectedRevision": 0,
"newAccount": {
"name": "Fargo",
"password": "string",
"username": "Fargo"
},
"porticoIdentity": {
"certificate": {
"keyId": "id_8h2k4q",
"notAfter": "2026-10-18T19:30:00Z",
"notBefore": "2026-10-18T19:30:00Z",
"publicKey": "string",
"purpose": "string",
"revision": 0,
"revoked": [
"string"
],
"signature": "string"
},
"keyId": "id_8h2k4q",
"payload": "string",
"signature": "string"
}
}- accountIdstringrequired
- currentPasswordstringrequired
- expectedRevisionintegerrequired
newAccountobject
- namestringrequired
- passwordstringrequired
- usernamestringrequired
porticoIdentityobject
certificateobject
- keyIdstringrequired
- notAfterstring (date-time)required
- notBeforestring (date-time)required
- publicKeystringrequired
- purposestringrequired
- revisionintegerrequired
- revokedarray of stringrequired
- signaturestringrequired
- keyIdstringrequired
- payloadstringrequired
- signaturestringrequired
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/ownership" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"accountId": "id_8h2k4q",
"currentPassword": "string",
"expectedRevision": 0,
"newAccount": {
"name": "Fargo",
"password": "string",
"username": "Fargo"
},
"porticoIdentity": {
"certificate": {
"keyId": "id_8h2k4q",
"notAfter": "2026-10-18T19:30:00Z",
"notBefore": "2026-10-18T19:30:00Z",
"publicKey": "string",
"purpose": "string",
"revision": 0,
"revoked": [
"string"
],
"signature": "string"
},
"keyId": "id_8h2k4q",
"payload": "string",
"signature": "string"
}
}'POST/v1/direct/ownership/custodyRun account ownership custodysession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
post_direct_ownership_custody- Max body
- 64 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
X-Portico-Installation-Id | header | string |
Request body application/json · required
{
"porticoIdentity": {
"certificate": {
"keyId": "id_8h2k4q",
"notAfter": "2026-10-18T19:30:00Z",
"notBefore": "2026-10-18T19:30:00Z",
"publicKey": "string",
"purpose": "string",
"revision": 0,
"revoked": [
"string"
],
"signature": "string"
},
"keyId": "id_8h2k4q",
"payload": "string",
"signature": "string"
}
}porticoIdentityobject | any | nullrequired
certificateobject
- keyIdstringrequired
- notAfterstring (date-time)required
- notBeforestring (date-time)required
- publicKeystringrequired
- purposestringrequired
- revisionintegerrequired
- revokedarray of stringrequired
- signaturestringrequired
- keyIdstringrequired
- payloadstringrequired
- signaturestringrequired
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/ownership/custody" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"porticoIdentity": {
"certificate": {
"keyId": "id_8h2k4q",
"notAfter": "2026-10-18T19:30:00Z",
"notBefore": "2026-10-18T19:30:00Z",
"publicKey": "string",
"purpose": "string",
"revision": 0,
"revoked": [
"string"
],
"signature": "string"
},
"keyId": "id_8h2k4q",
"payload": "string",
"signature": "string"
}
}'POST/v1/direct/passwordRun account passwordsession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
post_direct_password- Max body
- 64 KiB
Request body application/json · required
{
"code": "string",
"currentPassword": "string",
"newPassword": "string",
"turnOffTwoStep": true
}- codestringrequired
- currentPasswordstringrequired
- newPasswordstringrequired
- turnOffTwoStepboolean
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/password" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"code":"string","currentPassword":"string","newPassword":"string","turnOffTwoStep":true}'POST/v1/direct/password/resetReset account accesssession
- Audience
- Clients · Native API
- Authorization
- No credential needed
- OpenAPI operation ID
post_direct_password_reset- Max body
- 4 KiB
Request body application/json · required
{
"code": "string",
"username": "Fargo"
}- codestringrequired
- usernamestringrequired
Responses
200Successapplication/json
{
"account": {
"allowedLibraries": [
"string"
],
"disabled": true,
"disabledAt": "2026-10-18T19:30:00Z",
"disabledReason": "string",
"hostedAccountId": "id_8h2k4q",
"id": "id_8h2k4q",
"primaryProfileId": "id_8h2k4q",
"revision": 0,
"role": "string",
"username": "Fargo"
},
"authority": "string",
"canManage": true,
"capabilities": {
"manageAccount": true,
"managePeople": true,
"manageServer": true,
"manageSignIn": true
},
"custodyPending": true,
"deviceId": "id_8h2k4q",
"installationId": "id_8h2k4q",
"managePinRequired": true,
"passwordChangeRequired": true,
"profiles": [
{
"allowedLibraries": [
"string"
],
"art": "string",
"id": "id_8h2k4q",
"name": "Fargo",
"pinRequired": true,
"pinRevision": 0,
"position": 0,
"primary": true,
"revision": 0
}
],
"rememberProfiles": true,
"resetFileOwnerSession": false,
"serverId": "id_8h2k4q",
"session": {
"accessToken": "string",
"authorizationHorizon": "string",
"deviceId": "id_8h2k4q",
"expiresAt": "2026-10-18T19:30:00Z",
"installationId": "id_8h2k4q",
"refreshToken": "string",
"serverIdentity": {
"fingerprint": "string",
"publicKey": "string"
},
"sessionFamilyId": "id_8h2k4q",
"tokenGeneration": "string",
"viewer": {
"accountId": "id_8h2k4q",
"authority": "string",
"profileId": "id_8h2k4q",
"role": "account",
"serverId": "id_8h2k4q"
}
},
"twoStepSetupRequired": true
}accountobjectrequired
- allowedLibrariesarray of stringrequired
- disabledbooleanrequired
- disabledAtstring
- disabledReasonstring
- hostedAccountIdstring
- idstringrequired
- primaryProfileIdstringrequired
- revisionintegerrequired
- rolestringrequired
- usernamestringrequired
- authoritystringrequired
- canManagebooleanrequired
capabilitiesobjectrequired
- manageAccountbooleanrequired
- managePeoplebooleanrequired
- manageServerbooleanrequired
- manageSignInbooleanrequired
- custodyPendingboolean
- deviceIdstring
- installationIdstring
- managePinRequiredboolean
- passwordChangeRequiredtruerequired
profilesarray of objectrequired
- allowedLibrariesarray of stringrequired
- artstringrequired
- idstringrequired
- namestringrequired
- pinRequiredbooleanrequired
- pinRevisionintegerrequired
- positionintegerrequired
- primarybooleanrequired
- revisionintegerrequired
- rememberProfilesbooleanrequired
- resetFileOwnerSessionfalse
- serverIdstringrequired
sessionobjectrequired
- accessTokenstringrequired
- authorizationHorizonstringrequired
- deviceIdstringrequired
- expiresAtstringrequired
- installationIdstringrequired
- refreshTokenstringlength 0–0
serverIdentityobject
- fingerprintstringrequired
- publicKeystringrequired
- sessionFamilyIdstringrequired
- tokenGenerationstringrequired
viewerobjectrequired
- accountIdstringrequired
- authoritystringrequired
- profileIdstringrequired
- rolestringrequiredone of "account"
- serverIdstringrequired
- twoStepSetupRequiredboolean
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternalrate_limiteddatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/password/reset" \
-H "Content-Type: application/json" \
-d '{"code":"string","username":"Fargo"}'GET/v1/direct/pin-recoveryRead available PIN reset confirmationssession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
get_direct_pin_recovery
Responses
200Successapplication/json
{
"authenticator": true,
"password": true,
"recoveryCode": true
}- authenticatorbooleanrequired
- passwordbooleanrequired
- recoveryCodebooleanrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizedpassword_change_requiredfactor_setup_requirednot_permittedinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/direct/pin-recovery" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN"POST/v1/direct/portico-challengeRequest a signed account sign-in challengesession
- Audience
- Clients · Native API
- Authorization
- No credential needed
- OpenAPI operation ID
post_direct_portico_challenge- Max body
- 64 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
X-Portico-Installation-Id | header | string |
Request body application/json · required
{
"nonce": "string"
}- noncestringrequired
Responses
200Successapplication/json
{
"challenge": "string",
"expiresAt": "2026-10-18T19:30:00Z",
"proof": {
"key": "string"
}
}- challengestringrequired
- expiresAtstringrequired
- proofobjectrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/portico-challenge" \
-H "Content-Type: application/json" \
-d '{"nonce":"string"}'POST/v1/direct/profile-switchRun account profile switchsession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
post_direct_profile_switch- Max body
- 64 KiB
Request body application/json · required
{
"installationId": "id_8h2k4q",
"outgoingProfileId": "id_8h2k4q"
}- installationIdstringrequired
- outgoingProfileIdstringrequired
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/profile-switch" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"installationId":"id_8h2k4q","outgoingProfileId":"id_8h2k4q"}'POST/v1/direct/profilesRun account profileadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
post_direct_profiles- Max body
- 64 KiB
Request body application/json · required
{
"art": "string",
"name": "Fargo"
}- artstringrequired
- namestringrequired
Responses
201Successapplication/json
{
"account": {
"allowedLibraries": [
"string"
],
"disabled": true,
"disabledAt": "2026-10-18T19:30:00Z",
"disabledReason": "string",
"hostedAccountId": "id_8h2k4q",
"id": "id_8h2k4q",
"primaryProfileId": "id_8h2k4q",
"revision": 0,
"role": "string",
"username": "Fargo"
},
"authority": "string",
"canManage": true,
"capabilities": {
"manageAccount": true,
"managePeople": true,
"manageServer": true,
"manageSignIn": true
},
"custodyPending": true,
"managePinRequired": true,
"profiles": [
{
"allowedLibraries": [
"string"
],
"art": "string",
"id": "id_8h2k4q",
"name": "Fargo",
"pinRequired": true,
"pinRevision": 0,
"position": 0,
"primary": true,
"revision": 0
}
],
"rememberProfiles": true,
"serverId": "id_8h2k4q",
"twoStepSetupRequired": true
}accountobjectrequired
- allowedLibrariesarray of stringrequired
- disabledbooleanrequired
- disabledAtstring
- disabledReasonstring
- hostedAccountIdstring
- idstringrequired
- primaryProfileIdstringrequired
- revisionintegerrequired
- rolestringrequired
- usernamestringrequired
- authoritystringrequired
- canManagebooleanrequired
capabilitiesobjectrequired
- manageAccountbooleanrequired
- managePeoplebooleanrequired
- manageServerbooleanrequired
- manageSignInbooleanrequired
- custodyPendingboolean
- managePinRequiredboolean
profilesarray of objectrequired
- allowedLibrariesarray of stringrequired
- artstringrequired
- idstringrequired
- namestringrequired
- pinRequiredbooleanrequired
- pinRevisionintegerrequired
- positionintegerrequired
- primarybooleanrequired
- revisionintegerrequired
- rememberProfilesbooleanrequired
- serverIdstringrequired
- twoStepSetupRequiredboolean
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/profiles" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"art":"string","name":"Fargo"}'DELETE/v1/direct/profiles/{id}Retire an account profile and begin private cleanupadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
delete_direct_profiles_id- Max body
- 1 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/json · required
{
"deleteSavedResources": true,
"expectedRevision": 1,
"lifetime": "2026-10-18T19:30:00Z"
}- deleteSavedResourcesbooleanrequiredone of true
- expectedRevisionintegerrequired≥ 1
- lifetimestringrequiredpattern ^[0-9a-f]{32}$
Responses
200Successapplication/json
{
"lifetime": "2026-10-18T19:30:00Z",
"profileId": "id_8h2k4q",
"state": "removing"
}- lifetimestringrequiredpattern ^[0-9a-f]{32}$
- profileIdstringrequiredlength 1–128
- statestringrequiredone of "removing", "removed", "blocked"
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X DELETE "http://127.0.0.1:32500/v1/direct/profiles/{id}" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"deleteSavedResources":true,"expectedRevision":1,"lifetime":"2026-10-18T19:30:00Z"}'PATCH/v1/direct/profiles/{id}Change account profileadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
patch_direct_profiles_id- Max body
- 64 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/json · required
{
"art": "string",
"expectedRevision": 0,
"name": "Fargo",
"pin": "string",
"policy": {
"allowedLibraries": [
"string"
]
}
}- artstring
- expectedRevisionintegerrequired
- namestring
- pinstring
policyobject
- allowedLibrariesarray of stringrequired
Responses
200Successapplication/json
{
"account": {
"allowedLibraries": [
"string"
],
"disabled": true,
"disabledAt": "2026-10-18T19:30:00Z",
"disabledReason": "string",
"hostedAccountId": "id_8h2k4q",
"id": "id_8h2k4q",
"primaryProfileId": "id_8h2k4q",
"revision": 0,
"role": "string",
"username": "Fargo"
},
"authority": "string",
"canManage": true,
"capabilities": {
"manageAccount": true,
"managePeople": true,
"manageServer": true,
"manageSignIn": true
},
"custodyPending": true,
"managePinRequired": true,
"profiles": [
{
"allowedLibraries": [
"string"
],
"art": "string",
"id": "id_8h2k4q",
"name": "Fargo",
"pinRequired": true,
"pinRevision": 0,
"position": 0,
"primary": true,
"revision": 0
}
],
"rememberProfiles": true,
"serverId": "id_8h2k4q",
"twoStepSetupRequired": true
}accountobjectrequired
- allowedLibrariesarray of stringrequired
- disabledbooleanrequired
- disabledAtstring
- disabledReasonstring
- hostedAccountIdstring
- idstringrequired
- primaryProfileIdstringrequired
- revisionintegerrequired
- rolestringrequired
- usernamestringrequired
- authoritystringrequired
- canManagebooleanrequired
capabilitiesobjectrequired
- manageAccountbooleanrequired
- managePeoplebooleanrequired
- manageServerbooleanrequired
- manageSignInbooleanrequired
- custodyPendingboolean
- managePinRequiredboolean
profilesarray of objectrequired
- allowedLibrariesarray of stringrequired
- artstringrequired
- idstringrequired
- namestringrequired
- pinRequiredbooleanrequired
- pinRevisionintegerrequired
- positionintegerrequired
- primarybooleanrequired
- revisionintegerrequired
- rememberProfilesbooleanrequired
- serverIdstringrequired
- twoStepSetupRequiredboolean
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X PATCH "http://127.0.0.1:32500/v1/direct/profiles/{id}" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"art":"string","expectedRevision":0,"name":"Fargo","pin":"string","policy":{"allowedLibraries":["string"]}}'DELETE/v1/direct/profiles/{id}/avatarRemove account profile avataradmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
delete_direct_profiles_id_avatar
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X DELETE "http://127.0.0.1:32500/v1/direct/profiles/{id}/avatar" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/direct/profiles/{id}/avatarRun account profile avataradmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
post_direct_profiles_id_avatar- Max body
- 5 MiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/octet-stream · required
"string"string (binary)
Responses
201Successapplication/json
{
"profileId": "id_8h2k4q",
"sourceMime": "string",
"updatedAt": "2026-10-18T19:30:00Z",
"url": "https://example.com/…",
"version": 0
}- profileIdstringrequired
- sourceMimestringrequired
- updatedAtstringrequired
- urlstringrequired
- versionintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/profiles/{id}/avatar" \
-H "Authorization: Bearer $PORTICO_API_KEY"GET/v1/direct/profiles/{id}/deletion-previewRead account profile deletion previewadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
get_direct_profiles_id_deletion_preview
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"lifetime": "2026-10-18T19:30:00Z",
"name": "Fargo",
"playlists": 0,
"primary": true,
"profileId": "id_8h2k4q",
"revision": 0,
"savedResources": 0
}- lifetimestringrequired
- namestringrequired
- playlistsintegerrequired
- primarybooleanrequired
- profileIdstringrequired
- revisionintegerrequired
- savedResourcesintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/direct/profiles/{id}/deletion-preview" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/direct/profiles/{id}/pin-resetClear or replace a direct profile PINadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
post_direct_profile_pin_reset- Max body
- 4 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/json · required
{
"pin": "string"
}- pinstringrequired
Responses
200Successapplication/json
{
"account": {
"allowedLibraries": [
"string"
],
"disabled": true,
"disabledAt": "2026-10-18T19:30:00Z",
"disabledReason": "string",
"hostedAccountId": "id_8h2k4q",
"id": "id_8h2k4q",
"primaryProfileId": "id_8h2k4q",
"revision": 0,
"role": "string",
"username": "Fargo"
},
"authority": "string",
"canManage": true,
"capabilities": {
"manageAccount": true,
"managePeople": true,
"manageServer": true,
"manageSignIn": true
},
"custodyPending": true,
"managePinRequired": true,
"profiles": [
{
"allowedLibraries": [
"string"
],
"art": "string",
"id": "id_8h2k4q",
"name": "Fargo",
"pinRequired": true,
"pinRevision": 0,
"position": 0,
"primary": true,
"revision": 0
}
],
"rememberProfiles": true,
"serverId": "id_8h2k4q",
"twoStepSetupRequired": true
}accountobjectrequired
- allowedLibrariesarray of stringrequired
- disabledbooleanrequired
- disabledAtstring
- disabledReasonstring
- hostedAccountIdstring
- idstringrequired
- primaryProfileIdstringrequired
- revisionintegerrequired
- rolestringrequired
- usernamestringrequired
- authoritystringrequired
- canManagebooleanrequired
capabilitiesobjectrequired
- manageAccountbooleanrequired
- managePeoplebooleanrequired
- manageServerbooleanrequired
- manageSignInbooleanrequired
- custodyPendingboolean
- managePinRequiredboolean
profilesarray of objectrequired
- allowedLibrariesarray of stringrequired
- artstringrequired
- idstringrequired
- namestringrequired
- pinRequiredbooleanrequired
- pinRevisionintegerrequired
- positionintegerrequired
- primarybooleanrequired
- revisionintegerrequired
- rememberProfilesbooleanrequired
- serverIdstringrequired
- twoStepSetupRequiredboolean
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizedpassword_change_requiredfactor_setup_requirednot_permittedinvalid_requestrequest_in_progressinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/profiles/{id}/pin-reset" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"pin":"string"}'GET/v1/direct/profiles/{id}/restrictionsRead a direct profile's content and feature restrictionsread
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_direct_profile_restrictions
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200Successapplication/json
{
"allowDownloads": true,
"allowDvr": true,
"allowLiveTv": true,
"allowUnrated": true,
"allowWatchTogether": true,
"blockedLabels": [
"string"
],
"maximumAge": 0,
"maximumAgeRating": "string",
"profileId": "id_8h2k4q",
"ratingSystem": "string",
"revision": 0
}- allowDownloadsbooleanrequired
- allowDvrbooleanrequired
- allowLiveTvbooleanrequired
- allowUnratedbooleanrequired
- allowWatchTogetherbooleanrequired
- blockedLabelsarray of stringrequired
- maximumAgeintegerrequired
- maximumAgeRatingstringrequired
- profileIdstringrequired
- ratingSystemstringrequired
- revisionintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizedpassword_change_requiredinvalid_requestinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/direct/profiles/{id}/restrictions" \
-H "Authorization: Bearer $PORTICO_API_KEY"PUT/v1/direct/profiles/{id}/restrictionsReplace a direct profile's restrictionsadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
put_direct_profile_restrictions- Max body
- 32 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/json · required
{
"allowDownloads": true,
"allowDvr": true,
"allowLiveTv": true,
"allowUnrated": true,
"allowWatchTogether": true,
"blockedLabels": [
"string"
],
"expectedRevision": 0,
"maximumAgeRating": "string",
"ratingSystem": "string"
}- allowDownloadsbooleanrequired
- allowDvrbooleanrequired
- allowLiveTvbooleanrequired
- allowUnratedbooleanrequired
- allowWatchTogetherbooleanrequired
- blockedLabelsarray of stringrequired
- expectedRevisionintegerrequired
- maximumAgeRatingstringrequired
- ratingSystemstringrequired
Responses
200Successapplication/json
{
"allowDownloads": true,
"allowDvr": true,
"allowLiveTv": true,
"allowUnrated": true,
"allowWatchTogether": true,
"blockedLabels": [
"string"
],
"maximumAge": 0,
"maximumAgeRating": "string",
"profileId": "id_8h2k4q",
"ratingSystem": "string",
"revision": 0
}- allowDownloadsbooleanrequired
- allowDvrbooleanrequired
- allowLiveTvbooleanrequired
- allowUnratedbooleanrequired
- allowWatchTogetherbooleanrequired
- blockedLabelsarray of stringrequired
- maximumAgeintegerrequired
- maximumAgeRatingstringrequired
- profileIdstringrequired
- ratingSystemstringrequired
- revisionintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizedpassword_change_requirednot_permittedinvalid_requestrevision_mismatchinternalrevision_requireddatabase_busywriter_capacity
Example request
curl -X PUT "http://127.0.0.1:32500/v1/direct/profiles/{id}/restrictions" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"allowDownloads": true,
"allowDvr": true,
"allowLiveTv": true,
"allowUnrated": true,
"allowWatchTogether": true,
"blockedLabels": [
"string"
],
"expectedRevision": 0,
"maximumAgeRating": "string",
"ratingSystem": "string"
}'GET/v1/direct/profiles/{id}/retirementRead account profile cleanup stateadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
get_direct_profiles_id_retirement
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
lifetime | query | string |
Responses
200Successapplication/json
{
"lifetime": "2026-10-18T19:30:00Z",
"profileId": "id_8h2k4q",
"state": "removing"
}- lifetimestringrequiredpattern ^[0-9a-f]{32}$
- profileIdstringrequiredlength 1–128
- statestringrequiredone of "removing", "removed", "blocked"
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/direct/profiles/{id}/retirement" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/direct/profiles/{id}/selectRun account profile selectsession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
post_direct_profiles_id_select- Max body
- 64 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body application/json · required
{
"installationId": "id_8h2k4q",
"pin": "string",
"remember": true
}- installationIdstringrequired
- pinstringrequired
- rememberbooleanrequired
Responses
200Successapplication/json
{
"remembered": {
"expiresAt": "2026-10-18T19:30:00Z"
},
"session": {
"accessToken": "string",
"authorizationHorizon": "string",
"deviceId": "id_8h2k4q",
"expiresAt": "2026-10-18T19:30:00Z",
"installationId": "id_8h2k4q",
"refreshToken": "string",
"serverIdentity": {
"fingerprint": "string",
"publicKey": "string"
},
"sessionFamilyId": "id_8h2k4q",
"tokenGeneration": "string",
"viewer": {
"accountId": "id_8h2k4q",
"authority": "string",
"profileId": "id_8h2k4q",
"role": "string",
"serverId": "id_8h2k4q"
}
}
}rememberedobject
- expiresAtstringrequired
sessionobjectrequired
- accessTokenstringrequired
- authorizationHorizonstringrequired
- deviceIdstringrequired
- expiresAtstringrequired
- installationIdstringrequired
- refreshTokenstring
serverIdentityobject
- fingerprintstringrequired
- publicKeystringrequired
- sessionFamilyIdstringrequired
- tokenGenerationstringrequired
viewerobjectrequired
- accountIdstringrequired
- authoritystringrequired
- profileIdstringrequired
- rolestringrequired
- serverIdstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/profiles/{id}/select" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"installationId":"id_8h2k4q","pin":"string","remember":true}'GET/v1/direct/profiles/avatarsList this direct account's profile picturesread
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the read scope, or a signed-in session
- OpenAPI operation ID
get_direct_profile_avatars
Responses
200Successapplication/json
{
"items": [
{
"profileId": "id_8h2k4q",
"sourceMime": "string",
"updatedAt": "2026-10-18T19:30:00Z",
"url": "https://example.com/…",
"version": 0
}
]
}itemsarray of objectrequired
- profileIdstringrequired
- sourceMimestringrequired
- updatedAtstringrequired
- urlstringrequired
- versionintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizedpassword_change_requiredinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/direct/profiles/avatars" \
-H "Authorization: Bearer $PORTICO_API_KEY"PUT/v1/direct/profiles/orderSave account profile orderadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
put_direct_profiles_order- Max body
- 64 KiB
Request body application/json · required
{
"profiles": [
{
"id": "id_8h2k4q",
"revision": 0
}
]
}profilesarray of objectrequired
- idstringrequired
- revisionintegerrequired
Responses
200Successapplication/json
{
"account": {
"allowedLibraries": [
"string"
],
"disabled": true,
"disabledAt": "2026-10-18T19:30:00Z",
"disabledReason": "string",
"hostedAccountId": "id_8h2k4q",
"id": "id_8h2k4q",
"primaryProfileId": "id_8h2k4q",
"revision": 0,
"role": "string",
"username": "Fargo"
},
"authority": "string",
"canManage": true,
"capabilities": {
"manageAccount": true,
"managePeople": true,
"manageServer": true,
"manageSignIn": true
},
"custodyPending": true,
"managePinRequired": true,
"profiles": [
{
"allowedLibraries": [
"string"
],
"art": "string",
"id": "id_8h2k4q",
"name": "Fargo",
"pinRequired": true,
"pinRevision": 0,
"position": 0,
"primary": true,
"revision": 0
}
],
"rememberProfiles": true,
"serverId": "id_8h2k4q",
"twoStepSetupRequired": true
}accountobjectrequired
- allowedLibrariesarray of stringrequired
- disabledbooleanrequired
- disabledAtstring
- disabledReasonstring
- hostedAccountIdstring
- idstringrequired
- primaryProfileIdstringrequired
- revisionintegerrequired
- rolestringrequired
- usernamestringrequired
- authoritystringrequired
- canManagebooleanrequired
capabilitiesobjectrequired
- manageAccountbooleanrequired
- managePeoplebooleanrequired
- manageServerbooleanrequired
- manageSignInbooleanrequired
- custodyPendingboolean
- managePinRequiredboolean
profilesarray of objectrequired
- allowedLibrariesarray of stringrequired
- artstringrequired
- idstringrequired
- namestringrequired
- pinRequiredbooleanrequired
- pinRevisionintegerrequired
- positionintegerrequired
- primarybooleanrequired
- revisionintegerrequired
- rememberProfilesbooleanrequired
- serverIdstringrequired
- twoStepSetupRequiredboolean
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X PUT "http://127.0.0.1:32500/v1/direct/profiles/order" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"profiles":[{"id":"id_8h2k4q","revision":0}]}'GET/v1/direct/registration-policyRead owner sign-up and device-approval policyadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
get_direct_registration_policy
Responses
200Successapplication/json
{
"selfRegistration": "string"
}- selfRegistrationstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/direct/registration-policy" \
-H "Authorization: Bearer $PORTICO_API_KEY"PUT/v1/direct/registration-policySave owner sign-up and device-approval policyadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
put_direct_registration_policy- Max body
- 4 KiB
Request body application/json · required
{
"selfRegistration": "string"
}- selfRegistrationstringrequired
Responses
200Successapplication/json
{
"selfRegistration": "string"
}- selfRegistrationstringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinvalid_requestinternaldatabase_busywriter_capacity
Example request
curl -X PUT "http://127.0.0.1:32500/v1/direct/registration-policy" \
-H "Authorization: Bearer $PORTICO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"selfRegistration":"string"}'POST/v1/direct/remembered-accountsRun account remembered accountssession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
post_direct_remembered_accounts- Max body
- 64 KiB
Request body application/json · required
{
"automaticSignIn": true,
"installationId": "id_8h2k4q"
}- automaticSignInbooleanrequired
- installationIdstringrequired
Responses
200Successapplication/json
{
"items": [
{
"accountId": "id_8h2k4q",
"automaticSignIn": true,
"avatarUrl": "https://example.com/…",
"avatarVersion": 0,
"displayName": "Fargo",
"lastUsed": "string",
"username": "Fargo"
}
]
}itemsarray of objectrequired
- accountIdstringrequired
- automaticSignInbooleanrequired
- avatarUrlstring
- avatarVersionintegerrequired
- displayNamestringrequired
- lastUsedstringrequired
- usernamestringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/remembered-accounts" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"automaticSignIn":true,"installationId":"id_8h2k4q"}'DELETE/v1/direct/remembered-accounts/{accountId}Forget one account remembered on this installationsession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
delete_direct_remembered_account- Max body
- 4 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
accountIdrequired | path | string |
Request body application/json · required
{
"installationId": "id_8h2k4q"
}- installationIdstringrequired
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizednot_permittedinvalid_requestinternaldatabase_busywriter_capacity
Example request
curl -X DELETE "http://127.0.0.1:32500/v1/direct/remembered-accounts/{accountId}" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"installationId":"id_8h2k4q"}'GET/v1/direct/sessionsRead this direct account's active and recently signed-out sessionsadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
get_direct_sessions
Responses
200Successapplication/json
{
"items": [
{
"current": true,
"expiresAt": "2026-10-18T19:30:00Z",
"id": "id_8h2k4q",
"profileId": "id_8h2k4q",
"profileName": "Fargo",
"revokedAt": "2026-10-18T19:30:00Z",
"revokedReason": "string",
"statusText": "string"
}
]
}itemsarray of objectrequired
- currentbooleanrequired
- expiresAtstringrequired
- idstringrequired
- profileIdstringrequired
- profileNamestringrequired
- revokedAtstring
- revokedReasonstring
- statusTextstring
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizedpassword_change_requirednot_permittedinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/direct/sessions" \
-H "Authorization: Bearer $PORTICO_API_KEY"DELETE/v1/direct/sessions/{id}Sign out one direct-account sessionadmin
- Audience
- Clients · Native API
- Authorization
- API key or personal access token with the admin scope, or a signed-in session
- OpenAPI operation ID
delete_direct_session
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizedpassword_change_requirednot_permittedinvalid_requestinternaldatabase_busywriter_capacity
Example request
curl -X DELETE "http://127.0.0.1:32500/v1/direct/sessions/{id}" \
-H "Authorization: Bearer $PORTICO_API_KEY"POST/v1/direct/sessions/sign-out-everywhereSign this direct account out of every devicesession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
post_direct_sign_out_everywhere
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesunauthorizedpassword_change_requirednot_permittedinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/sessions/sign-out-everywhere" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN"POST/v1/direct/sign-inSign in to this serversession
- Audience
- Clients · Native API
- Authorization
- No credential needed
- OpenAPI operation ID
post_direct_sign_in- Max body
- 64 KiB
Parameters
| Name | In | Type | Description |
|---|---|---|---|
X-Portico-Installation-Id | header | string |
Request body application/json · required
{
"password": "string",
"porticoIdentity": {
"certificate": {
"keyId": "id_8h2k4q",
"notAfter": "2026-10-18T19:30:00Z",
"notBefore": "2026-10-18T19:30:00Z",
"publicKey": "string",
"purpose": "string",
"revision": 0,
"revoked": [
"string"
],
"signature": "string"
},
"keyId": "id_8h2k4q",
"payload": "string",
"signature": "string"
},
"username": "Fargo"
}- passwordstringrequired
porticoIdentityobject
certificateobject
- keyIdstringrequired
- notAfterstring (date-time)required
- notBeforestring (date-time)required
- publicKeystringrequired
- purposestringrequired
- revisionintegerrequired
- revokedarray of stringrequired
- signaturestringrequired
- keyIdstringrequired
- payloadstringrequired
- signaturestringrequired
- usernamestringrequired
Responses
200Successapplication/json
{
"account": {
"allowedLibraries": [
"string"
],
"disabled": true,
"disabledAt": "2026-10-18T19:30:00Z",
"disabledReason": "string",
"hostedAccountId": "id_8h2k4q",
"id": "id_8h2k4q",
"primaryProfileId": "id_8h2k4q",
"revision": 0,
"role": "string",
"username": "Fargo"
},
"authority": "string",
"canManage": true,
"capabilities": {
"manageAccount": true,
"managePeople": true,
"manageServer": true,
"manageSignIn": true
},
"challenge": {
"expiresAt": "2026-10-18T19:30:00Z",
"token": "string"
},
"custodyPending": true,
"deviceId": "id_8h2k4q",
"installationId": "id_8h2k4q",
"managePinRequired": true,
"passwordChangeRequired": true,
"profiles": [
{
"allowedLibraries": [
"string"
],
"art": "string",
"id": "id_8h2k4q",
"name": "Fargo",
"pinRequired": true,
"pinRevision": 0,
"position": 0,
"primary": true,
"revision": 0
}
],
"rememberProfiles": true,
"resetFileOwnerSession": true,
"serverId": "id_8h2k4q",
"session": {
"accessToken": "string",
"authorizationHorizon": "string",
"deviceId": "id_8h2k4q",
"expiresAt": "2026-10-18T19:30:00Z",
"installationId": "id_8h2k4q",
"refreshToken": "string",
"serverIdentity": {
"fingerprint": "string",
"publicKey": "string"
},
"sessionFamilyId": "id_8h2k4q",
"tokenGeneration": "string",
"viewer": {
"accountId": "id_8h2k4q",
"authority": "string",
"profileId": "id_8h2k4q",
"role": "string",
"serverId": "id_8h2k4q"
}
},
"twoStepSetupRequired": true
}accountobjectrequired
- allowedLibrariesarray of stringrequired
- disabledbooleanrequired
- disabledAtstring
- disabledReasonstring
- hostedAccountIdstring
- idstringrequired
- primaryProfileIdstringrequired
- revisionintegerrequired
- rolestringrequired
- usernamestringrequired
- authoritystringrequired
- canManagebooleanrequired
capabilitiesobjectrequired
- manageAccountbooleanrequired
- managePeoplebooleanrequired
- manageServerbooleanrequired
- manageSignInbooleanrequired
challengeobject
- expiresAtstringrequired
- tokenstringrequired
- custodyPendingboolean
- deviceIdstring
- installationIdstring
- managePinRequiredboolean
- passwordChangeRequiredboolean
profilesarray of objectrequired
- allowedLibrariesarray of stringrequired
- artstringrequired
- idstringrequired
- namestringrequired
- pinRequiredbooleanrequired
- pinRevisionintegerrequired
- positionintegerrequired
- primarybooleanrequired
- revisionintegerrequired
- rememberProfilesbooleanrequired
- resetFileOwnerSessionboolean
- serverIdstringrequired
sessionobject
- accessTokenstringrequired
- authorizationHorizonstringrequired
- deviceIdstringrequired
- expiresAtstringrequired
- installationIdstringrequired
- refreshTokenstring
serverIdentityobject
- fingerprintstringrequired
- publicKeystringrequired
- sessionFamilyIdstringrequired
- tokenGenerationstringrequired
viewerobjectrequired
- accountIdstringrequired
- authoritystringrequired
- profileIdstringrequired
- rolestringrequired
- serverIdstringrequired
- twoStepSetupRequiredboolean
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/sign-in" \
-H "Content-Type: application/json" \
-d '{
"password": "string",
"porticoIdentity": {
"certificate": {
"keyId": "id_8h2k4q",
"notAfter": "2026-10-18T19:30:00Z",
"notBefore": "2026-10-18T19:30:00Z",
"publicKey": "string",
"purpose": "string",
"revision": 0,
"revoked": [
"string"
],
"signature": "string"
},
"keyId": "id_8h2k4q",
"payload": "string",
"signature": "string"
},
"username": "Fargo"
}'DELETE/v1/direct/trustRemove account trustsession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
delete_direct_trust- Max body
- 64 KiB
Request body application/json · required
{
"installationId": "id_8h2k4q",
"profileId": "id_8h2k4q"
}- installationIdstringrequired
- profileIdstringrequired
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X DELETE "http://127.0.0.1:32500/v1/direct/trust" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"installationId":"id_8h2k4q","profileId":"id_8h2k4q"}'DELETE/v1/direct/two-factorRemove account two-factor verificationsession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
delete_direct_two_factor- Max body
- 64 KiB
Request body application/json · required
{
"code": "string",
"password": "string"
}- codestringrequired
- passwordstringrequired
Responses
204Success
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X DELETE "http://127.0.0.1:32500/v1/direct/two-factor" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"code":"string","password":"string"}'GET/v1/direct/two-factorRead account two-factor verificationsession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
get_direct_two_factor
Responses
200Successapplication/json
{
"enabled": true,
"pendingEnrolment": true,
"recoveryCodesRemaining": 0
}- enabledbooleanrequired
- pendingEnrolmentbooleanrequired
- recoveryCodesRemainingintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busy
Example request
curl -X GET "http://127.0.0.1:32500/v1/direct/two-factor" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN"POST/v1/direct/two-factor/enrolRun account two-factor verification enrolsession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
post_direct_two_factor_enrol- Max body
- 64 KiB
Request body application/json · required
{
"password": "string"
}- passwordstringrequired
Responses
201Successapplication/json
{
"recoveryCodes": [
"string"
],
"secret": "string",
"uri": "string"
}- recoveryCodesarray of stringrequired
- secretstringrequired
- uristringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/two-factor/enrol" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"password":"string"}'POST/v1/direct/two-factor/recovery-codesReplace account recovery codessession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
post_direct_two_factor_recovery_codes- Max body
- 64 KiB
Request body application/json · required
{
"code": "string",
"password": "string"
}- codestringrequired
- passwordstringrequired
Responses
200Successapplication/json
{
"codes": [
"string"
]
}- codesarray of stringrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundcurrent_password_incorrectaccount_lockedtwo_factor_missingtwo_factor_requiredtwo_factor_invalidsign_in_kind_porticopassword_change_requiredfactor_setup_requiredauthentication_busyinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/two-factor/recovery-codes" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"code":"string","password":"string"}'POST/v1/direct/two-factor/verifyRun account two-factor verification verifysession
- Audience
- Clients · Native API
- Authorization
- Session only; API keys and personal access tokens are refused
- OpenAPI operation ID
post_direct_two_factor_verify- Max body
- 64 KiB
Request body application/json · required
{
"code": "string",
"password": "string"
}- codestringrequired
- passwordstringrequired
Responses
200Successapplication/json
{
"enabled": true,
"pendingEnrolment": true,
"recoveryCodesRemaining": 0
}- enabledbooleanrequired
- pendingEnrolmentbooleanrequired
- recoveryCodesRemainingintegerrequired
defaultRequest refused or unavailableapplication/json
{
"error": {
"code": "string",
"message": "string"
}
}errorobjectrequired
- codestringrequired
- messagestringrequired
Error codesinvalid_requestunauthorizednot_permittednot_foundinternaldatabase_busywriter_capacity
Example request
curl -X POST "http://127.0.0.1:32500/v1/direct/two-factor/verify" \
-H "Authorization: Bearer $PORTICO_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"code":"string","password":"string"}'No operations match that filter.