Regions and base URL
SaaS Manager is hosted in multiple regions. Choose a base URL for your tenant’s region from the Servers dropdown:https://app.trelica.com(United States)https://eu.trelica.com(Europe)
Authentication
Every request must send an Authorization header carrying an OAuth 2.0 access token, prefixed withBearer:
401 Unauthorized. Inspect the WWW-Authenticate response header for detail. For example:
offline_access scope, use your refresh token to obtain a new access token. A 403 Forbidden means the token is valid but lacks the scope required by the endpoint.
Dates and times
Dates and times are sent and returned in RFC 3339 format . For example,2020-12-25 (midnight) or 2020-12-25T10:50:00Z. Field names ending in Dtm carry a meaningful time component, while field names ending in Date are date-only.
Optional fields and null
Responses omit fields that have no value, so you’ll see the field absent rather than returned asnull. When creating or replacing a resource with PUT, any field you omit is cleared. With PATCH, omitting a field leaves it unchanged, whereas sending it as null clears it.
Pagination
List endpoints are paginated and return up to 100 results by default. You can request up to 1000 with the limit query parameter, though you may receive fewer than requested. Request the next page with theafter query parameter, passing the opaque cursor token that SaaS Manager supplies. The response’s next field (and the link response header, rel="next") contains the full URL for the next page:
startIndex/count pagination scheme instead.
Filtering
Many list endpoints accept a URL-encodedfilter query parameter based on the SCIM filtering specification. A filter is one or more expressions (an attribute name, operator, or optional value) combined with and, or, not, and grouped with parentheses.
Attribute names match the JSON returned and may use dot notation for nested attributes (for example, createdBy.email). For an attribute that is an array of objects, put a sub-expression in brackets so the item matches when any element satisfies it. For example, teams[name eq "Developers"] or teams[id eq "5f8d0a1b2c3d4e5f60718293"]. Values can be double-quoted strings, integers, double-quoted RFC 3339 dates, or booleans. Some list endpoints also accept a free-text q parameter that searches the resource’s displayable fields.
Soft-deleted entities are excluded by default. You can include them with a filter that references deleted (for example, filter=deleted eq true).
| Operator | Meaning | Behavior |
|---|---|---|
eq | equal | Attribute value is identical to the operator value |
ne | not equal | Attribute value differs from the operator value |
co | contains | Attribute value contains the operator value text |
sw | starts with | Attribute value starts with the operator value text |
ew | ends with | Attribute value ends with the operator value text |
pr | present | Attribute has a non-empty / non-null value |
gt | greater than | Attribute value is greater than the operator value |
ge | greater than or equal | Attribute value is greater than or equal to the operator value |
lt | less than | Attribute value is less than the operator value |
le | less than or equal | Attribute value is less than or equal to the operator value |
gt/ge/lt/le, strings compare lexicographically, dates chronologically, and numbers numerically. Each list endpoint documents the fields you can filter on. For example:
| Filter | Result |
|---|---|
firstName sw "Jan" | People whose first name starts with “Jan” |
teams[name eq "Developers"] | People in the team called Developers |
not (leavingDate pr) | People with no leaving date |
lastModifiedDtm ge "2021-06-01" | Records modified on or after 1 June 2021 |
Errors
A400 Bad Request indicates a problem with your request. The body is a problem-details object whereerrors maps each offending field to its messages, with title, status, a type URL, and an extensions.traceId for correlation:
500 Internal Server Error, contact saasmanager@1password.com with details of the request so we can investigate.
Scopes
Scopes define what an API app may do. Following the principle of least privilege, grant only the scopes you need. Each endpoint documents the scope(s) it requires.| Scope | Description |
|---|---|
Apps.Read | Read-only access to applications |
Apps.Users.Read | Read-only access to application accounts |
Apps.Write | Write access to applications |
Assets.Read | Read-only access to devices |
Assets.Write | Write access to devices |
AuditLog.Read | Read-only access to the audit log |
Contracts.Read | Read-only access to contracts |
Contracts.Write | Write access to contracts |
People.Read | Read-only access to people and teams |
People.Write | Write access to people and teams |
Users.Read | Read-only access to users with access to SaaS Manager |
Users.Write | Write access to users with access to SaaS Manager |
Workflows.Read | Read-only access to workflow definitions |
Workflows.Runs.Read | Read-only access to workflow runs |
Workflows.Runs.Execute | Execute workflow run actions |
Workflows.Runs.ReadSecrets | Read workflow run secrets |
offline_access | Issue a refresh token alongside the access token (Authorization Code flow) |