Skip to content

List modules and their curation

GET
/orgs/{org}/config/modules
curl --request GET \
--url 'https://api.sloose.com/orgs/org_9f3c/config/modules?connector=con_8f2a' \
--header 'Authorization: Bearer <token>'

Every module discovery has seen, with the organisation’s curation applied. present: false marks one the CRM no longer returns, and goneAt says when it went, where that is known. removedAt marks a gone one an administrator removed: its fields are forgotten, and it stays on this list because an import or a template set up for it keeps that setup aside, and gets it back if the connection offers the module again.

org
required

The organisation id the session was issued for. A token for one organisation can never read another.

string
Example
org_9f3c

The organisation id the session was issued for. A token for one organisation can never read another.

connector

The connection this is about, by id: one of the organisation’s, or your own. REQUIRED: absent or empty is 400 CONNECTION_REQUIRED, listing the connections this bearer may name, because nothing picks one for a request that does not say (design §14.8). Any other — another organisation’s, or another person’s — is 404 CONNECTION_NOT_FOUND.

string
Example
con_8f2a

The connection this is about, by id: one of the organisation’s, or your own. REQUIRED: absent or empty is 400 CONNECTION_REQUIRED, listing the connections this bearer may name, because nothing picks one for a request that does not say (design §14.8). Any other — another organisation’s, or another person’s — is 404 CONNECTION_NOT_FOUND.

Every discovered module, and the registry version this list belongs to.

Media typeapplication/json
object
modules
required
Array<object>

A discovered CRM module with the organisation’s curation applied.

object
id
required
string
key
required
string
apiName
required
string
singular
required
string | null
singularLabel

One record as the CRM names it in words (“Sales Order”); singular is the identifier expressions use (“SalesOrder”). Written by discovery; null until a discovery has read it, when a reader says singular.

string | null
ownLabel

The destination’s own name for the module, its plural (“Sales Orders”), beside label, which the organisation may have renamed, and singularLabel, its own word for one record. Written by discovery; null until one has read it. Served by the module list only.

string | null
enabled
required
boolean
present
required

False once discovery stops seeing the module in the CRM.

boolean
position
required
number | null
goneAt

When discovery stopped seeing the module in the CRM. Null while it is present, and for a module that went before Sloose kept the date and had no field to date it by.

string | null
fieldCount

How many fields the connection holds for the module — the ones the registry counts as present, which is what an import maps against and what the Connections pages say beside it, so they need not read every field. It is the registry’s, not the last read’s: a read that lists no fields for a module, or fails for it, leaves the fields the module already had in place (discovery errs that way on purpose), so the count stays with them. Present on the module list only (GET /orgs/{org}/config/modules), at the version it answers. Absent for a module with none (never read, or gone from the CRM).

number
child

Set on a SUBFORM (#2438): a module whose records are rows of another module’s field. It is reached from its parent and is never offered as a module to import into: enabling it is refused (MODULE_IS_SUBFORM).

object
parent
required

The parent module’s API name.

string
via
required

The parent’s field that holds the rows.

string
pointer

The child’s own field that points back to its parent. Read-only for an import.

string
maxRows
Any of:
number
layouts

Each layout of the parent that carries the subform, by the CRM’s layout id: its own row limit and required columns. The CRM applies ONE layout’s limit, the parent’s own. Absent where the layouts could not be read.

object
key
additional properties
object
name
required

The layout’s name as the CRM shows it.

string
maxRows
Any of:
number
required
required

The subform’s columns, by API name, this layout marks required.

Array<string>
defaultLayout

The id of the layout a create follows, where the CRM’s layout list names one default for every profile. Absent where it does not.

string
removedAt

When an administrator removed the module (DELETE /orgs/{org}/config/modules/{module}), which only a module gone from the CRM can be: its fields are forgotten, and it is listed here so that an import or a template set up for it keeps that setup aside. Null for one nobody removed, and again once the CRM offers it back.

string | null
key
additional properties
registryVersion
required
number
Example
{
"modules": [
{
"child": {
"maxRows": "off",
"layouts": {
"additionalProperty": {
"maxRows": "off"
}
}
}
}
]
}

The request named no connection (code: CONNECTION_REQUIRED, with connections: the ones this bearer may name). Nothing picks one for a request that does not say (design §14.8).

Media typeapplication/json

The error envelope every non-2xx answer uses.

object
error
required

Human-readable explanation.

string
code

Machine-readable reason. Absent on a few legacy 400s.

string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example"
}

No bearer, or one that no longer resolves: a session that is unknown or expired (code: AUTH_REQUIRED), or an API token that was revoked or expired (TOKEN_REVOKED, TOKEN_EXPIRED), whose organisation is gone (ORG_NOT_FOUND) or whose member or user row is (MEMBERSHIP_GONE).

Media typeapplication/json

The error envelope every non-2xx answer uses.

object
error
required

Human-readable explanation.

string
code

Machine-readable reason. Absent on a few legacy 400s.

string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example"
}

The bearer’s role is too low (code: ROLE_REQUIRED), or it was issued for a different organisation; the organisation has been closed (code: ORG_CLOSED, either kind of bearer); the person is banned (code: BANNED, a session); or it is a session that is signed in but in no organisation (code: NO_ORG): one that never joined one, or whose person was taken out of the one it was in, or left it. Signing in again changes nothing for NO_ORG; choosing or making an organisation does.

Media typeapplication/json

The error envelope every non-2xx answer uses.

object
error
required

Human-readable explanation.

string
code

Machine-readable reason. Absent on a few legacy 400s.

string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example"
}

?connector= names a connection this person may not use: another organisation’s, or another person’s (code: CONNECTION_NOT_FOUND).

Media typeapplication/json

The error envelope every non-2xx answer uses.

object
error
required

Human-readable explanation.

string
code

Machine-readable reason. Absent on a few legacy 400s.

string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example"
}

The restore switch is on (code: MAINTENANCE): every route but /health and /robots.txt is refused before anything is read, except the operator’s own POST /staff/people/{id}/delete with the ADMIN_TOKEN. Sloose is down for maintenance. Please try again in a few minutes.

Media typeapplication/json
object
error
required
string
code
required
string
Allowed value: MAINTENANCE
Example
{
"code": "MAINTENANCE"
}
Retry-After
integer

Seconds until asking again is worth it (300 while the switch is on).

Report a problem with this page

sloose.com