IAM API reference
Project IAM policies, identities, and credentials.
Published contracts: @socra/iam-api@0.2.1.
Base URL
https://iam.socra.cloudService authorization definitions
A producer-owned catalog of project permissions and predefined roles.
Get service authorization definition
/admin/v1/service-authorizations/{service}Path parameters
servicestringrequiredmin length: 1 · max length: 253 · pattern: ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$Query parameters
No query parameters
Response
6 fields
servicestringrequiredmin length: 1 · max length: 253 · pattern: ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$permission_prefixstringrequiredpattern: ^[a-z][a-z0-9]*$role_prefixstringrequiredpattern: ^[a-z][a-zA-Z0-9._-]*$permissionsobject[]required
permissionsobject[]requirednamestringrequiredmin length: 3 · max length: 256 · pattern: ^[a-z][a-z0-9]*(?:[.-][a-z][a-zA-Z0-9]*)+$titlestringrequiredmin length: 1 · max length: 256descriptionstring | nullrequireddefault: nullbasic_roles"owner" | "editor" | "viewer"[]requireddefault: []rolesobject[]required
rolesobject[]requirednamestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$titlestringrequiredmin length: 1 · max length: 256descriptionstring | nullrequireddefault: nullpermissionsstring[]requiredmin items: 1updated_atcustomrequiredSynchronize service authorization definition
/admin/v1/service-authorizations/{service}Path parameters
servicestringrequiredmin length: 1 · max length: 253 · pattern: ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$Request body
permission_prefixstringrequiredpattern: ^[a-z][a-z0-9]*$role_prefixstringrequiredpattern: ^[a-z][a-zA-Z0-9._-]*$permissionsobject[]required
permissionsobject[]requirednamestringrequiredmin length: 3 · max length: 256 · pattern: ^[a-z][a-z0-9]*(?:[.-][a-z][a-zA-Z0-9]*)+$titlestringrequiredmin length: 1 · max length: 256descriptionstring | nulloptionaldefault: nullbasic_roles"owner" | "editor" | "viewer"[]optionaldefault: []rolesobject[]required
rolesobject[]requirednamestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$titlestringrequiredmin length: 1 · max length: 256descriptionstring | nulloptionaldefault: nullpermissionsstring[]requiredmin items: 1Response
6 fields
servicestringrequiredmin length: 1 · max length: 253 · pattern: ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$permission_prefixstringrequiredpattern: ^[a-z][a-z0-9]*$role_prefixstringrequiredpattern: ^[a-z][a-zA-Z0-9._-]*$permissionsobject[]required
permissionsobject[]requirednamestringrequiredmin length: 3 · max length: 256 · pattern: ^[a-z][a-z0-9]*(?:[.-][a-z][a-zA-Z0-9]*)+$titlestringrequiredmin length: 1 · max length: 256descriptionstring | nullrequireddefault: nullbasic_roles"owner" | "editor" | "viewer"[]requireddefault: []rolesobject[]required
rolesobject[]requirednamestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$titlestringrequiredmin length: 1 · max length: 256descriptionstring | nullrequireddefault: nullpermissionsstring[]requiredmin items: 1updated_atcustomrequiredIAM permissions
Discoverable project permissions declared by Socra services.
List IAM permissions
/v1/permissionsQuery parameters
servicestringoptionalmin length: 1 · max length: 253 · pattern: ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$Response
2 fields
dataobject[]required
dataobject[]requirednamestringrequiredmin length: 3 · max length: 256 · pattern: ^[a-z][a-z0-9]*(?:[.-][a-z][a-zA-Z0-9]*)+$titlestringrequiredmin length: 1 · max length: 256descriptionstring | nullrequireddefault: nullbasic_roles"owner" | "editor" | "viewer"[]requireddefault: []servicestringrequiredmin length: 1 · max length: 253 · pattern: ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$has_morefalserequiredIAM predefined roles
Discoverable predefined roles assignable in project IAM policies.
List IAM predefined roles
/v1/rolesQuery parameters
servicestringoptionalmin length: 1 · max length: 253 · pattern: ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$Response
2 fields
dataobject[]required
dataobject[]requirednamestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$titlestringrequiredmin length: 1 · max length: 256descriptionstring | nullrequireddefault: nullpermissionsstring[]requiredmin items: 1servicestringrequiredmin length: 1 · max length: 253 · pattern: ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$has_morefalserequiredIAM custom roles
A project-owned role composed from service-declared permissions.
Create custom role
/v1/projects/{project_id}/rolesPath parameters
project_idcustomrequiredRequest body
role_idstringrequiredmin length: 3 · max length: 64 · pattern: ^[a-z][a-zA-Z0-9._-]*$titlestringrequiredmin length: 1 · max length: 100descriptionstring | nullrequiredpermissionsstring[]requiredmin items: 1 · max items: 100stage"alpha" | "beta" | "ga" | "disabled"requiredResponse
9 fields
namestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$project_idcustomrequiredrole_idstringrequiredmin length: 3 · max length: 64 · pattern: ^[a-z][a-zA-Z0-9._-]*$titlestringrequiredmin length: 1 · max length: 100descriptionstring | nullrequiredpermissionsstring[]requiredmin items: 1 · max items: 100stage"alpha" | "beta" | "ga" | "disabled"requiredcreated_atcustomrequiredupdated_atcustomrequiredList custom roles
/v1/projects/{project_id}/rolesPath parameters
project_idcustomrequiredQuery parameters
Response
2 fields
dataobject[]required
dataobject[]requirednamestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$project_idcustomrequiredrole_idstringrequiredmin length: 3 · max length: 64 · pattern: ^[a-z][a-zA-Z0-9._-]*$titlestringrequiredmin length: 1 · max length: 100descriptionstring | nullrequiredpermissionsstring[]requiredmin items: 1 · max items: 100stage"alpha" | "beta" | "ga" | "disabled"requiredcreated_atcustomrequiredupdated_atcustomrequiredhas_morefalserequiredGet custom role
/v1/projects/{project_id}/roles/{role_id}Path parameters
project_idcustomrequiredrole_idstringrequiredmin length: 3 · max length: 64 · pattern: ^[a-z][a-zA-Z0-9._-]*$Query parameters
No query parameters
Response
9 fields
namestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$project_idcustomrequiredrole_idstringrequiredmin length: 3 · max length: 64 · pattern: ^[a-z][a-zA-Z0-9._-]*$titlestringrequiredmin length: 1 · max length: 100descriptionstring | nullrequiredpermissionsstring[]requiredmin items: 1 · max items: 100stage"alpha" | "beta" | "ga" | "disabled"requiredcreated_atcustomrequiredupdated_atcustomrequiredUpdate custom role
/v1/projects/{project_id}/roles/{role_id}Path parameters
project_idcustomrequiredrole_idstringrequiredmin length: 3 · max length: 64 · pattern: ^[a-z][a-zA-Z0-9._-]*$Request body
titlestringoptionalmin length: 1 · max length: 100descriptionstring | nulloptionalpermissionsstring[]optionalmin items: 1 · max items: 100stage"alpha" | "beta" | "ga" | "disabled"optionalResponse
9 fields
namestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$project_idcustomrequiredrole_idstringrequiredmin length: 3 · max length: 64 · pattern: ^[a-z][a-zA-Z0-9._-]*$titlestringrequiredmin length: 1 · max length: 100descriptionstring | nullrequiredpermissionsstring[]requiredmin items: 1 · max items: 100stage"alpha" | "beta" | "ga" | "disabled"requiredcreated_atcustomrequiredupdated_atcustomrequiredDelete custom role
/v1/projects/{project_id}/roles/{role_id}Path parameters
project_idcustomrequiredrole_idstringrequiredmin length: 3 · max length: 64 · pattern: ^[a-z][a-zA-Z0-9._-]*$Query parameters
No query parameters
Response
No response body
IAM policies
A GCP-style project IAM policy made of predefined role bindings.
Get IAM policy
/v1/projects/{project_id}/iamPolicy/getPath parameters
project_idcustomrequiredRequest body
Response
4 fields
version1requiredetagstringrequiredmin length: 1bindingsobject[]required
bindingsobject[]requiredrolestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$membersstring[]requiredmin items: 1conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000deny_rulesobject[]requireddefault: []
deny_rulesobject[]requireddefault: []denied_permissionsstring[]requiredmin items: 1 · max items: 100denied_principalsstring | "principalSet://socra/public:all"[]requiredmin items: 1exception_principalsstring[]requireddefault: []conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000Set IAM policy
/v1/projects/{project_id}/iamPolicy/setPath parameters
project_idcustomrequiredRequest body
policyobjectrequired
policyobjectrequiredversion1requiredetagstringrequiredmin length: 1bindingsobject[]required
bindingsobject[]requiredrolestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$membersstring[]requiredmin items: 1conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000deny_rulesobject[]optionaldefault: []
deny_rulesobject[]optionaldefault: []denied_permissionsstring[]requiredmin items: 1 · max items: 100denied_principalsstring | "principalSet://socra/public:all"[]requiredmin items: 1exception_principalsstring[]optionaldefault: []conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000Response
4 fields
version1requiredetagstringrequiredmin length: 1bindingsobject[]required
bindingsobject[]requiredrolestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$membersstring[]requiredmin items: 1conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000deny_rulesobject[]requireddefault: []
deny_rulesobject[]requireddefault: []denied_permissionsstring[]requiredmin items: 1 · max items: 100denied_principalsstring | "principalSet://socra/public:all"[]requiredmin items: 1exception_principalsstring[]requireddefault: []conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000Test IAM permissions
/v1/projects/{project_id}/iamPolicy/testPermissionsPath parameters
project_idcustomrequiredRequest body
permissionsstring[]requiredmin items: 1 · max items: 100contextobjectoptional
contextobjectoptionalrequest_timecustomoptionalresource_namestringoptionalmax length: 500Response
1 field
permissionsstring[]requiredAccount IAM policies
Inherited IAM allow and deny rules for every project in an account.
Get account IAM policy
/v1/accounts/{account_id}/iamPolicy/getPath parameters
account_idcustomrequiredRequest body
Response
4 fields
version1requiredetagstringrequiredmin length: 1bindingsobject[]required
bindingsobject[]requiredrolestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$membersstring[]requiredmin items: 1conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000deny_rulesobject[]requireddefault: []
deny_rulesobject[]requireddefault: []denied_permissionsstring[]requiredmin items: 1 · max items: 100denied_principalsstring | "principalSet://socra/public:all"[]requiredmin items: 1exception_principalsstring[]requireddefault: []conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000Set account IAM policy
/v1/accounts/{account_id}/iamPolicy/setPath parameters
account_idcustomrequiredRequest body
policyobjectrequired
policyobjectrequiredversion1requiredetagstringrequiredmin length: 1bindingsobject[]required
bindingsobject[]requiredrolestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$membersstring[]requiredmin items: 1conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000deny_rulesobject[]optionaldefault: []
deny_rulesobject[]optionaldefault: []denied_permissionsstring[]requiredmin items: 1 · max items: 100denied_principalsstring | "principalSet://socra/public:all"[]requiredmin items: 1exception_principalsstring[]optionaldefault: []conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000Response
4 fields
version1requiredetagstringrequiredmin length: 1bindingsobject[]required
bindingsobject[]requiredrolestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$membersstring[]requiredmin items: 1conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000deny_rulesobject[]requireddefault: []
deny_rulesobject[]requireddefault: []denied_permissionsstring[]requiredmin items: 1 · max items: 100denied_principalsstring | "principalSet://socra/public:all"[]requiredmin items: 1exception_principalsstring[]requireddefault: []conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000IAM policy audit events
Immutable history of project IAM policy mutations.
List IAM policy audit history
/v1/projects/{project_id}/iamPolicy/auditPath parameters
project_idcustomrequiredQuery parameters
limitintegeroptionalmin: 1 · max: 100Response
2 fields
dataobject[]required
dataobject[]requiredidstringrequiredproject_idcustomrequiredactor_principalstringrequiredpattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$action"policy.bootstrap" | "policy.set"requiredprevious_policyobject | nullrequiredpolicyobjectrequired
policyobjectrequiredversion1requiredetagstringrequiredmin length: 1bindingsobject[]required
bindingsobject[]requiredrolestringrequiredmin length: 7 · max length: 256 · pattern: ^(?:roles\/[a-z][a-zA-Z0-9._-]*|projects\/proj_[a-z0-9]+\/roles\/[a-z][a-zA-Z0-9._-]*)$membersstring[]requiredmin items: 1conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000deny_rulesobject[]requireddefault: []
deny_rulesobject[]requireddefault: []denied_permissionsstring[]requiredmin items: 1 · max items: 100denied_principalsstring | "principalSet://socra/public:all"[]requiredmin items: 1exception_principalsstring[]requireddefault: []conditionobjectoptional
conditionobjectoptionaltitlestringrequiredmin length: 1 · max length: 100descriptionstring | nulloptionalexpressionstringrequiredmin length: 1 · max length: 1000created_atcustomrequiredhas_morebooleanrequiredIAM authorization metrics
Per-permission authorization check, allow, and denial counters.
List IAM authorization metrics
/v1/projects/{project_id}/iamPolicy/metricsPath parameters
project_idcustomrequiredQuery parameters
Response
2 fields
dataobject[]required
dataobject[]requiredpermissionstringrequiredmin length: 3 · max length: 256 · pattern: ^[a-z][a-z0-9]*(?:[.-][a-z][a-zA-Z0-9]*)+$checksintegerrequiredmin: 0 · max: 9007199254740991allowedintegerrequiredmin: 0 · max: 9007199254740991deniedintegerrequiredmin: 0 · max: 9007199254740991has_morefalserequiredService accounts
A project-owned non-human identity.
Create service account
/v1/projects/{project_id}/service-accountsPath parameters
project_idcustomrequiredRequest body
namestringrequiredmin length: 1 · max length: 48 · pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$Response
7 fields
idcustomrequiredproject_idcustomrequiredprincipal_idstring | nullrequirednamestringrequiredmin length: 1 · max length: 48 · pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$status"active" | "disabled"requiredcreated_atcustomrequiredupdated_atcustomrequiredList service accounts
/v1/projects/{project_id}/service-accountsPath parameters
project_idcustomrequiredQuery parameters
limitintegeroptionalmin: 1 · max: 100afterstringoptionalResponse
2 fields
dataobject[]required
dataobject[]requiredidcustomrequiredproject_idcustomrequiredprincipal_idstring | nullrequirednamestringrequiredmin length: 1 · max length: 48 · pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$status"active" | "disabled"requiredcreated_atcustomrequiredupdated_atcustomrequiredhas_morebooleanrequiredGet service account
/v1/projects/{project_id}/service-accounts/{service_account_id}Path parameters
project_idcustomrequiredservice_account_idcustomrequiredQuery parameters
No query parameters
Response
7 fields
idcustomrequiredproject_idcustomrequiredprincipal_idstring | nullrequirednamestringrequiredmin length: 1 · max length: 48 · pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$status"active" | "disabled"requiredcreated_atcustomrequiredupdated_atcustomrequiredUpdate service account
/v1/projects/{project_id}/service-accounts/{service_account_id}Path parameters
project_idcustomrequiredservice_account_idcustomrequiredRequest body
status"active" | "disabled"optionalResponse
7 fields
idcustomrequiredproject_idcustomrequiredprincipal_idstring | nullrequirednamestringrequiredmin length: 1 · max length: 48 · pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$status"active" | "disabled"requiredcreated_atcustomrequiredupdated_atcustomrequiredDelete service account
/v1/projects/{project_id}/service-accounts/{service_account_id}Path parameters
project_idcustomrequiredservice_account_idcustomrequiredQuery parameters
No query parameters
Response
No response body
Service account keys
A replaceable credential for a service account.
Create service account key
/v1/projects/{project_id}/service-accounts/{service_account_id}/keysPath parameters
project_idcustomrequiredservice_account_idcustomrequiredRequest body
Response
5 fields
idcustomrequiredservice_account_idcustomrequiredsecret_hintstringrequiredsecretstringoptionalcreated_atcustomrequiredList service account keys
/v1/projects/{project_id}/service-accounts/{service_account_id}/keysPath parameters
project_idcustomrequiredservice_account_idcustomrequiredQuery parameters
Response
2 fields
dataobject[]required
dataobject[]requiredidcustomrequiredservice_account_idcustomrequiredsecret_hintstringrequiredsecretstringoptionalcreated_atcustomrequiredhas_morebooleanrequiredDelete service account key
/v1/projects/{project_id}/service-accounts/{service_account_id}/keys/{key_id}Path parameters
project_idcustomrequiredservice_account_idcustomrequiredkey_idcustomrequiredQuery parameters
No query parameters
Response
No response body