Managing Credentials Learn how to manage credentials and assign them to users.
Credentials determine the means by which a user gains access at an entrance. Types of credentials include key cards, mobile passes, and PIN codes. This guide provide instructions on creating and removing credentials, and reassigning them to users.
Create a Credential for a User
To create a credential for a user , provide the user ID (acs_user_id
) and the desired access method (access_method
). Seam supports the following access methods:
code
for a PIN code-based credential
card
for a key card-based credential
Depending on the access control system and the type of credential you are issuing, you can also specify the following properties for the new credential:
Start and end time frame for the validity of the credential (starts_at
and ends_at
).
Whether the credential is a multi-phone sync credential.
When creating a Seam mobile key, make sure to issue a multi-phone sync credential (is_multi_phone_sync_credential
).
The response includes the ID (acs_credential_id
) of the newly-created credential, the user (acs_user_id
) associated with the credential, and other additional properties of the credential.
Create a PIN Code-Based Credential
Python cURL (bash) JavaScript Ruby PHP C# Java Go
Request:
Copy seam . acs . credentials . create (
acs_user_id = "33333333-3333-3333-3333-333333333333" ,
access_method = "code" ,
code = "824759"
)
Response:
Copy AcsCredential(
acs_credential_id='66666666-6666-6666-6666-666666666666',
acs_user_id='33333333-3333-3333-3333-333333333333',
code='824759',
access_method='code',
...
)
Request:
Copy curl -X 'POST' \
'https://connect.getseam.com/acs/credentials/create' \
-H 'accept: application/json' \
-H "Authorization: Bearer ${API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"acs_user_id": "33333333-3333-3333-3333-333333333333",
"access_method": "code",
"code": "824759"
}'
Response:
Copy {
"acs_credential" : {
"acs_credential_id" : "66666666-6666-6666-6666-666666666666" ,
"acs_user_id" : "33333333-3333-3333-3333-333333333333" ,
"code" : "824759" ,
"access_method" : "code" ,
...
} ,
"ok" : true
}
Request:
Copy await seam . acs . credentials .create ({
acs_user_id : "33333333-3333-3333-3333-333333333333" ,
access_method : "code" ,
code : "824759"
});
Response:
Copy {
acs_credential_id : ' 66666666-6666-6666-6666-666666666666 ' ,
acs_user_id : ' 33333333-3333-3333-3333-333333333333 ' ,
code : ' 824759 ' ,
access_method : 'code' ,
...
}
Request:
Copy $seam -> acs -> credentials -> create (
acs_user_id : "33333333-3333-3333-3333-333333333333" ,
access_method : "code" ,
code : "824759"
) ;
Response:
Copy {
"acs_credential_id" : "66666666-6666-6666-6666-666666666666" ,
"acs_user_id" : "33333333-3333-3333-3333-333333333333" ,
"code" : "824759" ,
"access_method" : "code" ,
...
}
Request:
Copy seam . CredentialsAcs . Create (
acsUserId : "33333333-3333-3333-3333-333333333333" ,
accessMethod : "code" ,
code : "824759"
);
Response:
Copy {
"acs_credential_id" : "66666666-6666-6666-6666-666666666666" ,
"acs_user_id" : "33333333-3333-3333-3333-333333333333" ,
"code" : "824759" ,
"access_method" : "code" ,
...
}
Request:
Copy credential, uErr := client.Acs.Credentials. Create (
context. Background (), & acs . CredentialsCreateRequest {
AcsUserId: "33333333-3333-3333-3333-333333333333" ,
AccessMethod: "code" ,
Code: api. String ( "824759" ),
},
);
Response:
Copy {
"acs_credential" : {
"acs_credential_id" : "66666666-6666-6666-6666-666666666666" ,
"acs_user_id" : "33333333-3333-3333-3333-333333333333" ,
"code" : "824759" ,
"access_method" : "code" ,
...
} ,
"ok" : true
}
Create a Key Card-Based Credential
Python cURL (bash) JavaScript Ruby PHP C# Java Go
Request:
Copy seam . acs . credentials . create (
acs_user_id = "33333333-3333-3333-3333-333333333333" ,
access_method = "card" ,
code = "123456"
)
Response:
Copy AcsCredential(
acs_credential_id='77777777-7777-7777-7777-777777777777',
acs_user_id='33333333-3333-3333-3333-333333333333',
access_method='card',
...
)
Request:
Copy curl -X 'POST' \
'https://connect.getseam.com/acs/credentials/create' \
-H 'accept: application/json' \
-H "Authorization: Bearer ${API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"acs_user_id": "33333333-3333-3333-3333-333333333333",
"access_method": "card",
"code": "123456"
}'
Response:
Copy {
"acs_credential" : {
"acs_credential_id" : "77777777-7777-7777-7777-777777777777" ,
"acs_user_id" : "33333333-3333-3333-3333-333333333333" ,
"access_method" : "card" ,
...
} ,
"ok" : true
}
Request:
Copy await seam . acs . credentials .create ({
acs_user_id : "33333333-3333-3333-3333-333333333333" ,
access_method : "card" ,
code : "123456"
});
Response:
Copy {
acs_credential_id : ' 77777777-7777-7777-7777-777777777777 ' ,
acs_user_id : ' 33333333-3333-3333-3333-333333333333 ' ,
access_method : 'card' ,
...
}
Request:
Copy $seam -> acs -> credentials -> create (
acs_user_id : "33333333-3333-3333-3333-333333333333" ,
access_method : "card" ,
code : "123456"
) ;
Response:
Copy {
"acs_credential_id" : "77777777-7777-7777-7777-777777777777" ,
"acs_user_id" : "33333333-3333-3333-3333-333333333333" ,
"access_method" : "card" ,
...
}
Request:
Copy seam . CredentialsAcs . Create (
acsUserId : "33333333-3333-3333-3333-333333333333" ,
accessMethod : "card" ,
code : "123456"
);
Response:
Copy {
"acs_credential_id": "77777777-7777-7777-7777-777777777777",
"acs_user_id": "33333333-3333-3333-3333-333333333333",
"access_method": "card",
...
}
Request:
Copy credential, uErr := client.Acs.Credentials. Create (
context. Background (), & acs . CredentialsCreateRequest {
AcsUserId: "33333333-3333-3333-3333-333333333333" ,
AccessMethod: "card" ,
Code: api. String ( "123456" ),
},
);
Response:
Copy {
"acs_credential" : {
"acs_credential_id" : "77777777-7777-7777-7777-777777777777" ,
"acs_user_id" : "33333333-3333-3333-3333-333333333333" ,
"access_method" : "card" ,
...
} ,
"ok" : true
}
Create a Seam Mobile Key
Depending on the ACS for which you want to create a credential, you may also need to include system-specific metadata. See the system integration guide for your ACS. For more information about mobile access and issuing mobile credentials, see Mobile Access and Issuing Mobile Credentials from an Access Control System .
Python cURL (bash) JavaScript Ruby PHP C# Java Go
Request:
This request contains manufacturer-specific metadata that may vary by manufacturer .
Copy seam . acs . credentials . create (
acs_user_id = "33333333-3333-3333-3333-333333333333" ,
allowed_acs_entrance_ids = [
"55555555-5555-5555-5555-555555555555" ,
"55555555-5555-5555-5555-000000000000"
],
credential_manager_acs_system_id = "88888888-8888-8888-8888-888888888888" ,
access_method = "mobile_key" ,
is_multi_phone_sync_credential = True ,
starts_at = "2024-03-01T10:40:00Z" ,
ends_at = "2024-03-04T10:40:00Z" ,
...
)
Response:
This response contains manufacturer-specific metadata that may vary by manufacturer .
Copy AcsCredential(
acs_credential_id='99999999-9999-9999-9999-999999999999',
acs_user_id='33333333-3333-3333-3333-333333333333',
access_method='mobile_key',
is_multi_phone_sync_credential=True,
...
)
Request:
Copy curl -X 'POST' \
'https://connect.getseam.com/acs/credentials/create' \
-H 'accept: application/json' \
-H "Authorization: Bearer ${API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"acs_user_id": "33333333-3333-3333-3333-333333333333",
"allowed_acs_entrance_ids": [
"55555555-5555-5555-5555-555555555555",
"55555555-5555-5555-5555-000000000000"
],
"credential_manager_acs_system_id": "88888888-8888-8888-8888-888888888888",
"access_method": "mobile_key",
"is_multi_phone_sync_credential": true,
"starts_at": "2024-03-01T10:40:00Z",
"ends_at": "2024-03-04T10:40:00Z",
...
}'
Response:
Copy {
"acs_credential" : {
"acs_credential_id" : "99999999-9999-9999-9999-999999999999" ,
"acs_user_id" : "33333333-3333-3333-3333-333333333333" ,
"access_method" : "mobile_key" ,
"is_multi_phone_sync_credential" : true ,
...
} ,
"ok" : true
}
Request:
Copy await seam . acs . credentials .create ({
acs_user_id : "33333333-3333-3333-3333-333333333333" ,
allowed_acs_entrance_ids : [
"55555555-5555-5555-5555-555555555555" ,
"55555555-5555-5555-5555-000000000000"
] ,
credential_manager_acs_system_id : "88888888-8888-8888-8888-888888888888" ,
access_method : "mobile_key" ,
is_multi_phone_sync_credential : true ,
starts_at : "2024-03-01T10:40:00Z" ,
ends_at : "2024-03-04T10:40:00Z" ,
...
});
Response:
Copy {
acs_credential_id : ' 99999999-9999-9999-9999-999999999999 ' ,
acs_user_id : ' 33333333-3333-3333-3333-333333333333 ' ,
access_method : 'mobile_key' ,
is_multi_phone_sync_credential : true ,
...
}
Request:
Copy $seam -> acs -> credentials -> create (
acs_user_id : "33333333-3333-3333-3333-333333333333" ,
allowed_acs_entrance_ids : [
"55555555-5555-5555-5555-555555555555" ,
"55555555-5555-5555-5555-000000000000"
] ,
credential_manager_acs_system_id : "88888888-8888-8888-8888-888888888888" ,
access_method : "mobile_key" ,
is_multi_phone_sync_credential : true ,
starts_at : "2024-03-01T10:40:00Z" ,
ends_at : "2024-03-04T10:40:00Z" ,
...
) ;
Response:
Copy {
"acs_credential_id" : "99999999-9999-9999-9999-999999999999" ,
"acs_user_id" : "33333333-3333-3333-3333-333333333333" ,
"access_method" : "mobile_key" ,
"is_multi_phone_sync_credential" : true ,
...
}
Request:
Copy seam . CredentialsAcs . Create (
acsUserId : "33333333-3333-3333-3333-333333333333" ,
allowedAcsEntranceIds : new List < string >
{
"55555555-5555-5555-5555-555555555555" ,
"55555555-5555-5555-5555-000000000000"
} ,
credentialManagerAcsSystemId : "88888888-8888-8888-8888-888888888888" ,
accessMethod : "mobile_key" ,
isMultiPhoneSyncCredential : true ,
startsAt : "2024-03-01T10:40:00Z" ,
endsAt : "2024-03-04T10:40:00Z" ,
.. .
);
Response:
Copy {
"acs_credential_id" : "99999999-9999-9999-9999-999999999999" ,
"acs_user_id" : "33333333-3333-3333-3333-333333333333" ,
"access_method" : "mobile_key" ,
"is_multi_phone_sync_credential" : true ,
...
}
Request:
Copy startsAt, err := time. Parse (time.RFC3339, "2024-03-01T10:40:00Z" )
endsAt, err := time. Parse (time.RFC3339, "2024-03-04T10:40:00Z" )
if err != nil {
return err
}
credential, uErr := client.Acs.Credentials. Create (
context. Background (), & acs . CredentialsCreateRequest {
AcsUserId: "33333333-3333-3333-3333-333333333333" ,
AllowedAcsEntranceIds: {
"55555555-5555-5555-5555-555555555555" ,
"55555555-5555-5555-5555-000000000000" ,
},
CredentialManagerAcsSystemId: api. String ( "88888888-8888-8888-8888-888888888888" ),
AccessMethod: "mobile_key" ,
IsMultiPhoneSyncCredential: api. Bool ( true ),
StartsAt: api. Time (startsAt),
EndsAt: api. Time (endsAt),
...
},
)
Response:
Copy {
"acs_user" : {
"acs_credential_id" : "99999999-9999-9999-9999-999999999999" ,
"acs_user_id" : "33333333-3333-3333-3333-333333333333" ,
"access_method" : "mobile_key" ,
"is_multi_phone_sync_credential" : true ,
...
} ,
"ok" : true
}
Delete a Credential
To delete a credential , provide the credential ID (acs_credential_id
).
Python cURL (bash) JavaScript Ruby PHP C# Java Go
Request:
Copy seam . acs . credentials . delete (
acs_credential_id = "66666666-6666-6666-6666-666666666666"
)
Response:
Request:
Copy curl -X 'POST' \
'https://connect.getseam.com/acs/credentials/delete' \
-H 'accept: application/json' \
-H "Authorization: Bearer ${API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"acs_credential_id": "66666666-6666-6666-6666-666666666666"
}'
Response:
Request:
Copy await seam.acs.credentials.delete({
acs_credential_id: "66666666-6666-6666-6666-666666666666"
});
Response:
Request:
Copy $seam->acs->credentials->delete(
acs_credential_id: "66666666-6666-6666-6666-666666666666"
);
Response:
Request:
Copy seam.CredentialsAcs.Delete(
acsCredentialId: "66666666-6666-6666-6666-666666666666"
);
Response:
Request:
Copy _, uErr := client.Acs.Credentials.Delete(
context.Background(), &acs.CredentialsDeleteRequest{
acsCredentialId: "66666666-6666-6666-6666-666666666666",
},
);
Response: