Skip to content

Organizations

Replace Search source permissions

Replace the complete permission grants for one Search source. Requires organization Admin access. Supply the current revision and the grants for the configured provider. A stale revision returns 409. GitLab CSV mode accepts both files together, up to 4 MiB and 100,000 data rows each. Workspace API keys return `403`; use a personal API key or scoped OAuth token. OAuth scope: `api:write`.

PUT/api/v2/organizations/{organizationId}/search/sources/{sourceId}/permissions

Replace the complete permission grants for one Search source. Requires organization Admin access. Supply the current revision and the grants for the configured provider. A stale revision returns 409. GitLab CSV mode accepts both files together, up to 4 MiB and 100,000 data rows each. Workspace API keys return 403; use a personal API key or scoped OAuth token.

OAuth scope: api:write.

Authentication

Send a personal or workspace API key in X-API-Key. See key types and access; operations that reject workspace keys say so in their description.

Send X-API-Key in the request header.

Alternatively

Send a Sim OAuth access token in Authorization: Bearer. See OAuth authentication and scopes.

Authorization: Bearer YOUR_ACCESS_TOKEN

Required scopes: api:write

OAuth flows
json
{
  "authorizationCode": {
    "authorizationUrl": "https://www.sim.ai/api/auth/oauth2/authorize",
    "tokenUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "refreshUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "scopes": {
      "api:read": "Read your workspaces, workflows, files, tables, and logs",
      "api:write": "Read, create, change, run, and delete resources in your workspaces",
      "offline_access": "Stay signed in without asking again"
    }
  }
}

OAuth scope: api:write.

Path parameters

organizationIdstringRequired

Organization identifier.

minLength
1
sourceIdstringRequired

Identifier of the configured Search source.

minLength
1
maxLength
255

Request body

Required

The expected revision and complete replacement grants for the provider.

object

The expected revision and complete replacement grants for the provider.

2 fields
expectedRevisionintegerRequired

Permission revision read before exporting the grants.

minimum
0
maximum
9007199254740991
permissionsvalueRequired

Complete permission grants in the source provider’s format.

Schema details

Exactly one of

Option 1object
3 fields
providerstringRequired

Provider of the configured Search source.

const
gitlab
userMappingobjectRequired

GitLab user IDs and their verified Sim email addresses.

2 fields
filenamestringRequired

CSV filename without path separators.

minLength
1
maxLength
255
contentstringRequired

UTF-8 CSV contents, up to 4 MiB. Both files travel in one request body limited to 10 MiB after JSON encoding.

minLength
1
maxLength
4194304

Additional properties are not allowed.

projectPermissionsobjectRequired

GitLab project paths and the IDs of users granted access.

2 fields
filenamestringRequired

CSV filename without path separators.

minLength
1
maxLength
255
contentstringRequired

UTF-8 CSV contents, up to 4 MiB. Both files travel in one request body limited to 10 MiB after JSON encoding.

minLength
1
maxLength
4194304

Additional properties are not allowed.

Additional properties are not allowed.

Additional properties are not allowed.

Request example 1

json
{
  "expectedRevision": 2,
  "permissions": {
    "provider": "gitlab",
    "userMapping": {
      "filename": "users.csv",
      "content": "user_id,email\n42,reader@example.com\n"
    },
    "projectPermissions": {
      "filename": "projects.csv",
      "content": "project_path,user_id\nteam/project,42\n"
    }
  }
}

Responses

200

The new permission revision.

object

Current revision of the source permission grants.

1 field
dataobjectRequired

Response data.

1 field
revisionintegerRequired

Current permission revision.

minimum
0
maximum
9007199254740991

Additional properties are not allowed.

Additional properties are not allowed.

Response example 1

json
{
  "data": {
    "revision": 3
  }
}

Response headers

X-RateLimit-Limitinteger

Maximum requests allowed in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Remaininginteger

Requests remaining in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Resetstring

ISO 8601 timestamp when the current rate-limit window resets.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Was this helpful?
Suggest an edit