{"openapi":"3.0.0","info":{"title":"Web API v2 - Public ","description":"Documentation of the public web API.","version":"1.0.0"},"servers":[{"url":"https://eu1.make.com/api/v2","description":"EU1 production zone"},{"url":"https://eu2.make.com/api/v2","description":"EU2 production zone"},{"url":"https://us1.make.com/api/v2","description":"US1 production zone"},{"url":"https://us2.make.com/api/v2","description":"US2 production zone"},{"url":"https://eu1.make.celonis.com/api/v2","description":"Celonis EU1 production zone"},{"url":"https://us1.make.celonis.com/api/v2","description":"Celonis US1 production zone"}],"components":{"securitySchemes":{"token":{"type":"apiKey","name":"Authorization","in":"header","x-gitbook-prefix":"Token","x-gitbook-token-placeholder":"your-api-token","description":"Authorize the API call with your API token in the `Authorization` header with the value: `Token your-api-token`.\n\nIf you don't have an API token yet, please refer to the [\"Authentication\" section](/api-documentation/authentication) to learn how to create one.\n"}},"schemas":{"Team":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"organizationId":{"type":"integer"},"activeScenarios":{"type":"integer","description":"Number of active scenarios in the team. Only returned by `GET /teams/{teamId}` when requested via `cols[]`."},"activeApps":{"type":"integer","description":"Number of distinct apps that need a connection, used by the team's active scenarios. Only returned by `GET /teams/{teamId}` when requested via `cols[]`."},"operationsLimit":{"type":"integer"},"transferLimit":{"type":"bigint"},"type":{"type":"string","enum":["standard","personal"],"description":"Distinguishes a standard team from a private space (`personal`). Only returned when requested via\n`cols[]=type`. Private spaces are included in the list only when `includePrivateSpaces=true`.\n"}}},"Team--Admin":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"organizationId":{"type":"integer"},"scenarioDrafts":{"type":"boolean","deprecated":true,"description":"This property is deprecated. It is only supported on private instances and ignored on Make's public cloud.\n"},"deleted":{"type":"boolean"},"externalId":{"type":"string"},"type":{"type":"string","enum":["standard","personal"],"description":"Distinguishes a standard team from a private space (`personal`). Only returned when requested via\n`cols[]=type`. Private spaces are included in the list only when `includePrivateSpaces=true`.\n"}}},"User":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"language":{"type":"string"},"timezoneId":{"type":"integer"},"localeId":{"type":"integer"},"countryId":{"type":"integer"},"features":{"type":"object","properties":{"allow_apps":{"type":"boolean"}}},"avatar":{"type":"string","format":"uri"},"lastLogin":{"type":"string","format":"date-time"},"tfaStatus":{"type":"integer","nullable":true,"enum":[0,1,2],"description":"Two-factor authentication status:\n- 0: No TFA set\n- 1: TFA active (authenticator app)\n- 2: External authentication (Social SSO)\n\nIt is only supported on Make's public cloud instances.\n"},"supportEligible":{"type":"boolean","description":"Whether the user is eligible for contact support. False if all user's organizations are on Free plan and account is older than 90 days."},"userTeamIds":{"type":"array","nullable":true,"description":"IDs of teams the user belongs to within the organization. Only returned when explicitly requested via cols[]=userTeamIds and organizationId is provided.","items":{"type":"integer"}},"privateSpace":{"nullable":true,"description":"The user's personal private space in the organization. Only returned when explicitly requested via cols[]=privateSpace with organizationId on a public instance.","type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"globalAgentsEnabled":{"type":"boolean"},"type":{"type":"string","enum":["personal"]},"operationsLimit":{"type":"integer","nullable":true},"transferLimit":{"type":"bigint","nullable":true},"consumedOperations":{"type":"integer","nullable":true},"consumedTransfer":{"type":"bigint","nullable":true},"isPaused":{"type":"boolean","nullable":true},"consumedCenticredits":{"type":"integer","nullable":true}}}}},"UserPublic":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"language":{"type":"string"},"timezoneId":{"type":"integer"},"localeId":{"type":"integer"},"countryId":{"type":"integer"},"features":{"type":"object","properties":{"allow_apps":{"type":"boolean"}}},"avatar":{"type":"string","format":"uri"},"lastLogin":{"type":"string","format":"date-time"},"tfaStatus":{"type":"integer","nullable":true,"enum":[0,1,2],"description":"Two-factor authentication status:\n- 0: No TFA set\n- 1: TFA active (authenticator app)\n- 2: External authentication (Social SSO)\n\nIt is only supported on Make's public cloud instances.\n"},"supportEligible":{"type":"boolean","description":"Whether the user is eligible for contact support. False if all user's organizations are on Free plan and account is older than 90 days."},"userTeamIds":{"type":"array","nullable":true,"description":"IDs of teams the user belongs to within the organization. Only returned when explicitly requested via cols[]=userTeamIds and organizationId is provided.","items":{"type":"integer"}},"privateSpace":{"nullable":true,"description":"The user's personal private space in the organization. Only returned when explicitly requested via cols[]=privateSpace with organizationId on a public instance.","type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"globalAgentsEnabled":{"type":"boolean"},"type":{"type":"string","enum":["personal"]},"operationsLimit":{"type":"integer","nullable":true},"transferLimit":{"type":"bigint","nullable":true},"consumedOperations":{"type":"integer","nullable":true},"consumedTransfer":{"type":"bigint","nullable":true},"isPaused":{"type":"boolean","nullable":true},"consumedCenticredits":{"type":"integer","nullable":true}}}}},"UserUpdate":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"language":{"type":"string"},"timezoneId":{"type":"integer"},"localeId":{"type":"integer"},"countryId":{"type":"integer"},"usersAdminsRoleId":{"type":"integer"}}},"UserRole":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"identifier":{"type":"string"},"subsidiary":{"type":"boolean"},"category":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"managementType":{"type":"string","enum":["system_locked","admin_managed","custom_managed"],"description":"Indicates how the role is managed.","example":"system_locked"},"description":{"type":"string","nullable":true}}},"UserTeamRole":{"type":"object","properties":{"usersRoleId":{"type":"integer","nullable":true,"description":"The user's role in the team, or `null` when the user has no role (e.g. after removal)."},"userId":{"type":"integer"},"teamId":{"type":"integer"},"changeable":{"type":"boolean"},"ssoPending":{"type":"boolean"}}},"Pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}},"UserOrganizationInvitations":{"type":"object","properties":{"hash":{"type":"string"},"invitation":{"type":"string"},"usersRoleId":{"type":"integer"},"organizationId":{"type":"integer"},"organizationName":{"type":"string"},"zone":{"type":"string"}}},"UserOrganizationRole":{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"string"}}},"UserOrganizationRoleAll":{"allOf":[{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"string"}}},{"type":"object","properties":{"organizationTeamsCount":{"type":"integer"},"joinedTeamsCount":{"type":"integer"}}}]},"UserTeamNotification":{"type":"object","properties":{"userId":{"type":"integer"},"teamId":{"type":"integer"},"notificationId":{"type":"integer"},"enabled":{"type":"boolean"}}},"ApiToken":{"type":"object","properties":{"token":{"type":"string","description":"The API token. Only the response of the create call contains the full value; the list masks everything after the first 8 characters."},"scope":{"type":"array","items":{"type":"string","format":"uri"}},"created":{"type":"string","format":"date-time"},"label":{"type":"string"},"organizationId":{"type":"integer","nullable":true,"minimum":1,"description":"ID of the organization the API token is scoped to. A scoped token works only within that organization: requests that target another organization, or that have no organization context (for example `GET /users/me/api-tokens` or `/admin` routes), are rejected. `null` means the token works in every organization the user belongs to."}}},"EmailPreferences":{"type":"object","properties":{"id":{"type":"integer"},"uuid":{"type":"string"},"email":{"type":"string","format":"email"},"is_email_verified":{"type":"boolean"},"global":{"type":"object","properties":{"isEmailVerified":{"type":"boolean"},"preferences":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean"},"label":{"type":"string"},"description":{"type":"string"}}}}}},"zones":{"type":"array","items":{}}}},"DataStructureWhole":{"type":"object","properties":{"id":{"type":"integer"},"teamId":{"type":"integer"},"name":{"type":"string","minLength":1,"maxLength":128},"strict":{"type":"boolean"},"spec":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"string"},"multiline":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"number"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["date"]},"name":{"type":"string"},"label":{"type":"string"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["buffer"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"codepage":{"type":"string","enum":["binary","utf8"]}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["collection"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"array","items":{"type":"object"}},"sequence":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["array"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"object"},"sequence":{"type":"boolean"}},"required":["name","type"]}]}}},"required":["id","teamId","name","strict","spec"]},"DataStructureCreate":{"type":"object","properties":{"teamId":{"type":"integer","description":"The unique ID of the team in which the data structure will be created."},"name":{"type":"string","description":"The name of the data structure. The maximum length of the name is 128 characters.","minLength":1,"maxLength":128},"strict":{"type":"boolean","description":"Set to `true` to enforce strict validation of the data put in the data structure. With the strict validation enabled, the data structure won't store data that don't fit into the structure and the storing module will return an error.\n\nThe default value of this parameter is `false`. With the default setting, the modules using the data structure will process data that don't conform to the data structure.\n","example":true},"spec":{"type":"array","description":"Sets the data structure specification.","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"string"},"multiline":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"number"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["date"]},"name":{"type":"string"},"label":{"type":"string"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["buffer"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"codepage":{"type":"string","enum":["binary","utf8"]}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["collection"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"array","items":{"type":"object"}},"sequence":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["array"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"object"},"sequence":{"type":"boolean"}},"required":["name","type"]}]}}},"required":["teamId","name","strict","spec"]},"DataStructurePatch":{"type":"object","properties":{"name":{"type":"string","description":"The name of the data structure. The maximum length of the name is 128 characters.","minLength":1,"maxLength":128},"strict":{"type":"boolean","description":"Set to `true` to enforce strict validation of the data put in the data structure. With the strict validation enabled, the data structure won't store data that don't fit into the structure and the storing module will return an error.\n\nThe default value of this parameter is `false`. With the default setting, the modules using the data structure will process data that don't conform to the data structure.\n","example":false},"spec":{"type":"array","description":"Sets the data structure specification.\n \nNote that when you update the data structure specification with the `spec` parameter, you have to provide all structure fields you want to use. Make replaces the old structure specification with the new one.\"\n","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"string"},"multiline":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"number"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["date"]},"name":{"type":"string"},"label":{"type":"string"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["buffer"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"codepage":{"type":"string","enum":["binary","utf8"]}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["collection"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"array","items":{"type":"object"}},"sequence":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["array"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"object"},"sequence":{"type":"boolean"}},"required":["name","type"]}]}}}},"DataStructureSpec":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"string"},"multiline":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"number"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["date"]},"name":{"type":"string"},"label":{"type":"string"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["buffer"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"codepage":{"type":"string","enum":["binary","utf8"]}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["collection"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"array","items":{"type":"object"}},"sequence":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["array"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"object"},"sequence":{"type":"boolean"}},"required":["name","type"]}]},"Device":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"udid":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"info":{"type":"object"},"queueCount":{"type":"integer"},"queueLimit":{"type":"integer"},"scenarioId":{"type":"integer"}}},"DeviceEnrichment":{"type":"object","description":"Simplified device information for enrichment purposes","properties":{"id":{"type":"integer","description":"Unique device identifier","example":123,"minimum":1},"udid":{"type":"string","description":"Universal Device Identifier (32-character hexadecimal string)","example":"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6","pattern":"^[a-f0-9]{32}$","minLength":32,"maxLength":32},"teamId":{"type":"integer","description":"ID of the team/organization that owns this device","example":789,"minimum":1}},"required":["id","udid","teamId"],"additionalProperties":false},"DeviceEventIncoming":{"type":"object","properties":{"id":{"type":"string"},"scope":{"type":"string"},"size":{"type":"integer"},"created":{"type":"string","format":"date-time"}}},"DeviceEventOutgoing":{"type":"object","properties":{"id":{"type":"string"},"scope":{"type":"string"},"size":{"type":"integer"},"created":{"type":"string","format":"date-time"}}},"Dlq":{"type":"object","properties":{"id":{"type":"string"},"reason":{"type":"string"},"created":{"type":"string","format":"date-time"},"size":{"type":"integer"},"resolved":{"type":"boolean"},"retry":{"type":"boolean"},"attempts":{"type":"integer"}}},"DlqFull":{"type":"object","properties":{"id":{"type":"string"},"scenarioId":{"type":"integer"},"scenarioName":{"type":"string"},"companyId":{"type":"integer"},"companyName":{"type":"string"},"resolved":{"type":"boolean"},"deleted":{"type":"boolean"},"index":{"type":"integer"},"created":{"type":"string","format":"date-time"},"executionId":{"type":"string"},"retry":{"type":"boolean"},"attempts":{"type":"integer"},"size":{"type":"integer"}}},"DlqLog":{"type":"object","properties":{"imtId":{"type":"string"},"duration":{"type":"integer"},"transfer":{"type":"integer"},"operations":{"type":"integer"},"centicredits":{"type":"bigint"},"teamId":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string"},"authorId":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"status":{"type":"integer"},"instant":{"type":"boolean"},"organizationId":{"type":"integer"}}},"Blueprint":{"type":"object","properties":{"flow":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"ca":{"type":"string"},"qs":{"type":"array","items":{}},"url":{"type":"string","format":"uri"},"gzip":{"type":"boolean"},"method":{"type":"string"},"headers":{"type":"array","items":{}},"timeout":{"type":"string"},"authPass":{"type":"string"},"authUser":{"type":"string"},"bodyType":{"type":"string"},"shareCookies":{"type":"boolean"},"parseResponse":{"type":"boolean"},"followRedirect":{"type":"boolean"},"useQuerystring":{"type":"boolean"},"rejectUnauthorized":{"type":"boolean"}}},"module":{"type":"string","format":"uri"},"onerror":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"count":{"type":"string","format":"utc-millisec"},"retry":{"type":"boolean"},"interval":{"type":"string","format":"utc-millisec"}}},"module":{"type":"string","format":"uri"},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}},"restore":{"type":"object","properties":{"retry":{"type":"object","properties":{"mode":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}}}},"parameters":{"type":"object"}}}},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object"}},"restore":{"type":"object","properties":{"qs":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"method":{"type":"object","properties":{"mode":{"type":"string"},"label":{"type":"string"}}},"headers":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"bodyType":{"type":"object","properties":{"label":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}},"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}}}},"parameters":{"type":"object","properties":{"handleErrors":{"type":"boolean"}}}}}},"name":{"type":"string"},"metadata":{"type":"object","properties":{"version":{"type":"integer"},"scenario":{"type":"object","properties":{"maxErrors":{"type":"integer"},"autoCommit":{"type":"boolean"},"roundtrips":{"type":"integer","deprecated":true,"description":"This property is deprecated. Any value sent in a request is ignored: it is always stored and returned as `1`, and every execution runs a single cycle.\n"}}}}}}},"Hook":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"udid":{"type":"string"},"type":{"type":"string"},"packageName":{"type":"string"},"theme":{"type":"string","format":"color"},"flags":{"type":"object","properties":{"form":{"type":"boolean"}}},"editable":{"type":"boolean"},"queueCount":{"type":"integer"},"queueLimit":{"type":"integer"},"enabled":{"type":"boolean"},"gone":{"type":"boolean"},"typeName":{"type":"string"},"data":{"type":"object","additionalProperties":true,"properties":{"headers":{"type":"boolean"},"method":{"type":"boolean"},"stringify":{"type":"boolean"},"teamId":{"type":"integer"},"ip":{"type":"string","format":"ipv6"},"udt":{"type":"integer"}}},"scenarioId":{"type":"integer"},"url":{"type":"string","format":"uri"}}},"OrganizationHookSearchItem":{"type":"object","required":["id","name","teamId","organizationId","type","enabled","gone","url"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"organizationId":{"type":"integer"},"type":{"type":"string"},"typeName":{"type":"string","nullable":true},"theme":{"type":"string","nullable":true,"format":"color"},"enabled":{"type":"boolean"},"gone":{"type":"boolean"},"url":{"type":"string"}}},"HookEventIncoming":{"type":"object","properties":{"id":{"type":"string"},"scope":{"type":"string"},"size":{"type":"integer"},"created":{"type":"string","format":"date-time"},"data":{"type":"object"}}},"Key":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"typeName":{"type":"string"},"teamId":{"type":"integer"},"packageName":{"type":"string"},"theme":{"type":"string","format":"color"},"visibility":{"type":"string","enum":["team","locked"],"description":"Entity-tier visibility. With `locked` the key is restricted to its access list; `team` makes it visible to the whole team. Only returned when explicitly requested via `cols[]=visibility`."},"scenarioUsages":{"type":"array","description":"Scenarios that use this key. Only returned when explicitly requested via `cols[]=scenarioUsages`.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}}},"KeyType":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}}}},"componentType":{"type":"string"},"managed":{"type":"boolean","description":"When true, this key type is server-managed: its data is written only by a dedicated setup flow, and it is hidden from the generic key list unless explicitly requested via `?typeName=`. Absent/false for all other key types."},"creation":{"type":"object","description":"Describes how to create a key of this managed type. Only present when `managed` is true.","properties":{"mode":{"type":"string","example":"interactive"},"url":{"type":"string","example":"/ai-browser/context-setups"},"window":{"type":"object","properties":{"width":{"type":"integer"},"height":{"type":"integer"}}}}},"author":{"type":"string"},"version":{"type":"string"},"theme":{"type":"string","format":"color"},"icon":{"type":"string"}}},"Organization":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"serviceName":{"type":"string"},"nextReset":{"type":"string","format":"date-time"},"lastReset":{"type":"string","format":"date-time"},"isPaused":{"type":"boolean"},"countryId":{"type":"integer"},"timezoneId":{"type":"integer"},"deleted":{"type":"boolean"},"license":{"type":"object","additionalProperties":{}},"zone":{"type":"string"},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"productName":{"type":"string"},"ssoType":{"type":"string","nullable":true,"description":"The SSO authentication type configured for the organization. Possible values: 'oauth2', 'saml2', 'none', or null if not configured."},"scenarios":{"type":"integer"},"activeScenarios":{"type":"integer"},"tfaEnforced":{"type":"boolean","description":"Whether TFA is enforced for the organization."},"userSessionTimeout":{"type":"integer","description":"How long, in seconds, a user of the organization may stay inactive before being logged out.","example":86400},"featureControls":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"enabled":{"type":"boolean"}}}},"privateSpaces":{"type":"array","description":"The private spaces the requesting user is a member of within this organization.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"isOwner":{"type":"boolean","description":"Whether the requesting user owns this private space."},"hasAdminVisibility":{"type":"boolean","description":"Whether organization admins have visibility into this private space, i.e. whether the organization's \"add admins as observers\" private-spaces setting is currently enabled."}}}}}},"Notification":{"type":"object","properties":{"id":{"type":"string"},"subject":{"type":"string"},"read":{"type":"string","format":"date-time"},"created":{"type":"string","format":"date-time"},"type":{"type":"integer"}}},"NotificationAll":{"allOf":[{"type":"object","properties":{"id":{"type":"string"},"subject":{"type":"string"},"read":{"type":"string","format":"date-time"},"created":{"type":"string","format":"date-time"},"type":{"type":"integer"}}},{"type":"object","properties":{"body":{"type":"string"}}}]},"Connection":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"accountName":{"type":"string"},"accountLabel":{"type":"string"},"packageName":{"type":"string"},"expire":{"type":"string","format":"date-time"},"metadata":{"type":"object","properties":{"value":{"type":"string"},"type":{"type":"string","enum":["string","email"]}}},"teamId":{"type":"integer"},"theme":{"type":"string","format":"color"},"upgradeable":{"type":"boolean"},"scopesCnt":{"type":"integer"},"scoped":{"type":"boolean"},"accountType":{"type":"string"},"editable":{"type":"boolean"},"uid":{"type":"string"},"connectedSystemId":{"type":"string"},"organizationId":{"type":"integer"},"visibility":{"type":"string","enum":["team","locked"],"description":"Entity-tier visibility. With `locked` the connection is restricted to its access list; `team` makes it visible to the whole team."}}},"ConnectionAll":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"accountName":{"type":"string"},"accountLabel":{"type":"string"},"packageName":{"type":"string"},"expire":{"type":"string","format":"date-time"},"metadata":{"type":"object","properties":{"value":{"type":"string"},"type":{"type":"string","enum":["string","email"]}}},"teamId":{"type":"integer"},"theme":{"type":"string","format":"color"},"upgradeable":{"type":"boolean"},"scopesCnt":{"type":"integer"},"scoped":{"type":"boolean"},"accountType":{"type":"string"},"editable":{"type":"boolean"},"uid":{"type":"string"},"connectedSystemId":{"type":"string"},"organizationId":{"type":"integer"},"visibility":{"type":"string","enum":["team","locked"],"description":"Entity-tier visibility. With `locked` the connection is restricted to its access list; `team` makes it visible to the whole team."}}},{"type":"object","properties":{"scopes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"account":{"type":"string"}}}}}}]},"Template":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"teamName":{"type":"string"},"organizationId":{"type":"string"},"description":{"type":"string"},"usedApps":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"published":{"type":"string","format":"date-time"},"approved":{"type":"string","format":"date-time"},"approvedId":{"type":"integer"},"requestedApproval":{"type":"boolean"},"publishedId":{"type":"integer"},"publicUrl":{"type":"string"},"approvedName":{"type":"string"},"publishedName":{"type":"string"}}},"TemplatePublic":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"url":{"type":"string"},"usedApps":{"type":"array","items":{"type":"string"}},"usage":{"type":"integer"}}},"SdkApp":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"version":{"type":"integer"},"versionFull":{"type":"string"},"beta":{"type":"boolean"},"description":{"type":"string"},"theme":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"in_review":{"type":"boolean"},"modules":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"type":{"type":"integer"},"public":{"type":"boolean"}}}},"opensource":{"type":"boolean"},"changes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"table":{"type":"string"},"name":{"type":"string"},"column":{"type":"string"}}}}}},"SdkAppDetail":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer"},"beta":{"type":"boolean"},"theme":{"type":"string","format":"color"},"language":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"global":{"type":"boolean"},"countries":{"type":"array","items":{}},"created":{"type":"string","format":"date-time"},"manifestVersion":{"type":"integer"}}},"SdkAppReview":{"type":"object","properties":{"contactName":{"type":"string"},"contactEmail":{"type":"string","format":"email"},"reviewerName":{"type":"string"},"reviewerEmail":{"type":"string","format":"email"},"codeStatus":{"type":"string"},"testStatus":{"type":"string"},"docsStatus":{"type":"string"}}},"SdkAppReviewForm":{"type":"object","properties":{"config":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"},"required":{"type":"boolean"},"spec":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}}}}}}},"values":{"type":"object","properties":{"testingScenarios":{"type":"object"}}}}},"SdkAppReviewState":{"type":"object","description":"State of the new SDK app review flow for one app version. The lifecycle phase either comes from the new flow's own storage or, while the new flow has never touched the app (`derivedFromLegacy: true`), is derived from the legacy review state (`approved`/`in_review` flags and the legacy review status). Every lifecycle step is traced to Trackman with the legacy event closest to it: the submission that requests the review as `apps_review_requested`, every other step (including the reviewer's) as `apps_review_form_updated`, whose `review_form.event` is the timeline event the step appended. Auto-saving the draft (`PUT …/app-review/form`) is not a step and is not traced.","properties":{"appName":{"type":"string","description":"Name of the SDK app."},"appVersion":{"type":"integer","description":"Major version of the SDK app."},"phase":{"type":"string","enum":["dormant","preparing","review","changes_required","approved","updating","update_review","changes_required_update","rereview"],"description":"Lifecycle phase of the review. `dormant` → `start` → `preparing` → `submit` → `review`; a reviewer then approves (`approved`) or requests changes (`changes_required`, reopened with `start-rereview` → `rereview` → `submit` back to `review`). An approved listing is updated through `start-update` → `updating` → `submit` → `update_review`, whose outcomes are `approved` or `changes_required_update` (re-reviewed through `rereview` back to `update_review`). `cancel` steps back one phase on every track."},"reviewStep":{"type":"string","enum":["auto","manual"],"nullable":true,"description":"Sub-step while `phase` is `review`/`update_review` — `manual` means the submission waits with Make (where every submission starts), `auto` means Make sent the automatic-review notes and waits on the developer to implement and confirm them. `null` in every other phase."},"rereviewOrigin":{"type":"string","enum":["changes_required","changes_required_update"],"nullable":true,"description":"While `phase` is `rereview`, the phase the re-review was started from. `null` otherwise."},"derivedFromLegacy":{"type":"boolean","description":"`true` when `phase` was derived from legacy review state instead of stored new-flow state."},"draftForm":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"submittedForm":{"nullable":true,"allOf":[{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}}],"description":"Snapshot of `draftForm` taken at the last submit. Later draft edits do not change it."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last submit."},"events":{"type":"array","description":"Review history timeline, oldest first.","items":{"type":"object","properties":{"type":{"type":"string","description":"Event type. Developer-side (`actor: developer`): `preparation_started`, `submitted`, `cancelled`, `submission_withdrawn`, `auto_notes_confirmed`, `rereview_started`, `rereview_cancelled`, `resubmitted`, `update_started`, `update_submitted`, `update_withdrawn`, `update_cancelled`. Make-side (`actor: make`, with an optional `note`): `auto_notes_sent`, `approved`, `changes_requested`, `update_approved`, `update_changes_requested`."},"actor":{"type":"string","enum":["developer","make"],"description":"Which side of the review produced the event."},"note":{"type":"string","description":"Optional free-text detail (e.g. the reviewer's request). Omitted when empty."},"createdAt":{"type":"string","format":"date-time","description":"When the event happened."}}}},"updatedAt":{"type":"string","format":"date-time","nullable":true,"description":"Last modification of the new-flow state. `null` while no new-flow row exists."}}},"SdkAppReviewDraft":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"SdkAppCategory":{"type":"object","description":"One category of the taxonomy offered by the new SDK app review form, with its subcategories. `slug` is the category's stable identity — it is what a review form stores in `categories` / `subcategories`, and it survives a rename of `name`. Array order is display order.","properties":{"slug":{"type":"string","maxLength":128,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"Stable identifier of the category. Either pinned explicitly by the catalog sync or derived from `name` (diacritics stripped, lowercased, every run of non-alphanumerics collapsed to a dash)."},"name":{"type":"string","maxLength":255,"description":"Human-readable label to show in the review form."},"subcategories":{"type":"array","description":"The category's subcategories in display order; empty when the category has none. The taxonomy is exactly two levels deep — a subcategory never has children of its own.","items":{"type":"object","properties":{"slug":{"type":"string","maxLength":128,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"Stable identifier of the subcategory, unique within its category (the same slug may appear under a different category)."},"name":{"type":"string","maxLength":255,"description":"Human-readable label to show in the review form."}}}}}},"SdkAppReviewSupportContact":{"type":"object","description":"A support contact as entered in the support-contact section of the new SDK app review form (`supportContactName` / `supportContactEmail` of the review draft).","properties":{"name":{"type":"string","maxLength":255,"description":"Contact name as last entered for this email. Empty string when the draft carried an email without a name."},"email":{"type":"string","maxLength":255,"description":"Contact email, in the spelling of its most recent use. Contacts are distinct by email compared case-insensitively."}},"required":["name","email"]},"SdkAppCategoryChangeSet":{"type":"object","description":"What one catalog sync did to one taxonomy level. Values are slugs, so a syncing script can log them verbatim; subcategories are keyed `<categorySlug>/<subcategorySlug>`, since a subcategory slug is only unique within its category. All four buckets are empty when the posted list matched what was already stored.","properties":{"created":{"type":"array","description":"Slugs that did not exist before this sync.","items":{"type":"string"}},"updated":{"type":"array","description":"Slugs whose label or display order changed.","items":{"type":"string"}},"restored":{"type":"array","description":"Slugs an earlier sync had retired and this one brought back.","items":{"type":"string"}},"removed":{"type":"array","description":"Slugs that were being offered and this sync retired.","items":{"type":"string"}}}},"SdkAppCategoryChanges":{"type":"object","description":"What one catalog sync changed, per taxonomy level.","properties":{"categories":{"type":"object","description":"What one catalog sync did to one taxonomy level. Values are slugs, so a syncing script can log them verbatim; subcategories are keyed `<categorySlug>/<subcategorySlug>`, since a subcategory slug is only unique within its category. All four buckets are empty when the posted list matched what was already stored.","properties":{"created":{"type":"array","description":"Slugs that did not exist before this sync.","items":{"type":"string"}},"updated":{"type":"array","description":"Slugs whose label or display order changed.","items":{"type":"string"}},"restored":{"type":"array","description":"Slugs an earlier sync had retired and this one brought back.","items":{"type":"string"}},"removed":{"type":"array","description":"Slugs that were being offered and this sync retired.","items":{"type":"string"}}}},"subcategories":{"type":"object","description":"What one catalog sync did to one taxonomy level. Values are slugs, so a syncing script can log them verbatim; subcategories are keyed `<categorySlug>/<subcategorySlug>`, since a subcategory slug is only unique within its category. All four buckets are empty when the posted list matched what was already stored.","properties":{"created":{"type":"array","description":"Slugs that did not exist before this sync.","items":{"type":"string"}},"updated":{"type":"array","description":"Slugs whose label or display order changed.","items":{"type":"string"}},"restored":{"type":"array","description":"Slugs an earlier sync had retired and this one brought back.","items":{"type":"string"}},"removed":{"type":"array","description":"Slugs that were being offered and this sync retired.","items":{"type":"string"}}}}}},"SdkPublisher":{"type":"object","description":"Account-level publisher profile of an SDK app developer (\"App developer contact\"). One profile per user; its values appear on the landing pages of all apps the user publishes.","properties":{"userId":{"type":"integer","description":"Owning user."},"authorName":{"type":"string","nullable":true,"description":"Author name shown as the publisher (non-partner variant)."},"contactEmail":{"type":"string","format":"email","nullable":true,"description":"Developer contact email. `null` means the account email is used."},"companyName":{"type":"string","nullable":true,"description":"Company (ISV) name shown as the publisher. For a Make partner it is the name their apps are published under, which the partner cannot change themselves — Make administrators set it through `PATCH /admin/sdk/apps/{app}/{version}/publisher`."},"partnerType":{"type":"string","enum":["technology","solution"],"nullable":true,"description":"Make partner program of the publisher; `null` means not a partner (the default). Assigned by Make administrators only, through `PATCH /admin/sdk/apps/{app}/{version}/publisher` — the developer's own `PATCH /sdk/publisher` cannot change it."},"hasLogo":{"type":"boolean","description":"Whether a company logo is stored (served by `GET /sdk/publisher/logo`). Make administrators set a partner's logo through `PUT /admin/sdk/apps/{app}/{version}/publisher/logo`."},"logoFilename":{"type":"string","nullable":true,"description":"Original filename of the uploaded logo."},"createdAt":{"type":"string","format":"date-time","description":"When the profile was created."},"updatedAt":{"type":"string","format":"date-time","description":"When the profile was last updated."}}},"SdkEndpoint":{"type":"object","properties":{"name":{"type":"string","description":"Endpoint name. Unique within the app version, immutable after creation."},"label":{"type":"string"},"description":{"type":"string","nullable":true},"context":{"type":"string","nullable":true,"description":"Free-form context made available to AI agents calling the endpoint."},"annotations":{"type":"object","description":"MCP-inspired behavior hints. Only the known hints are persisted; unknown keys are stripped.","properties":{"readOnlyHint":{"type":"boolean"},"destructiveHint":{"type":"boolean"},"idempotentHint":{"type":"boolean"},"openWorldHint":{"type":"boolean"},"arbitraryCallHint":{"type":"boolean"}}},"attachedAccounts":{"type":"array","items":{"type":"string"},"description":"Names of the connections attached to the endpoint."},"public":{"type":"boolean"},"approved":{"type":"boolean"},"deprecated":{"type":"boolean"},"archived":{"type":"boolean","description":"Zone-only flag; never synchronized to HQ."},"centicreditsFormula":{"type":"string","nullable":true},"centicreditsFormulaDescription":{"type":"string","nullable":true},"centicreditsFormulaDocumentationUrl":{"type":"string","nullable":true},"centicreditsFormulaMeta":{"type":"string","nullable":true},"schemaVersion":{"type":"integer"},"rev":{"type":"integer","description":"Revision number, used for Swarm sync."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"SdkGithubBinding":{"type":"object","description":"A binding between an SDK app version and a GitHub repository, established through a Make GitHub connection. Multiple bindings per app version are allowed (e.g. a public mirror and a private fork, or one binding per branch).","properties":{"id":{"type":"integer","description":"Binding ID. Unique across all apps; assigned by Make."},"appName":{"type":"string","description":"Name of the SDK app the binding belongs to."},"appVersion":{"type":"integer","description":"Major version of the SDK app the binding targets."},"repoUrl":{"type":"string","description":"Canonical URL of the bound repository, as reported by GitHub."},"owner":{"type":"string","description":"GitHub owner login (user or organization), as reported by GitHub at bind time."},"repo":{"type":"string","description":"GitHub repository name."},"branch":{"type":"string","description":"Branch on the remote the binding syncs against."},"defaultBranch":{"type":"string","description":"Default branch reported by GitHub when the binding was last established."},"private":{"type":"boolean","description":"Whether the remote repository is private."},"pullRequestBranch":{"type":"string","description":"Default branch the pull-request flow commits to — `make/<appName>-v<appVersion>`; a request may name another. Opening a pull request moves the binding onto its branch (`branch` becomes it) so later pushes update the pull request. Derived from the app name and version, never stored."},"connectionId":{"type":"integer","description":"ID of the Make GitHub connection used for OAuth."},"connectionName":{"type":"string","nullable":true,"description":"Display name of the Make connection, or `null` when the connection no longer exists."},"lastSyncedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last successful sync in any direction. `null` until the push/pull flows are available."},"lastSyncedCommitSha":{"type":"string","nullable":true},"lastPushedAt":{"type":"string","format":"date-time","nullable":true},"lastPushedCommitSha":{"type":"string","nullable":true},"lastPulledAt":{"type":"string","format":"date-time","nullable":true},"lastPulledCommitSha":{"type":"string","nullable":true},"remoteHeadSha":{"type":"string","nullable":true,"description":"Last observed HEAD SHA of the bound branch. Refreshed best-effort on read; `null` when the branch has no commits or GitHub is unreachable."},"behindBy":{"type":"integer","nullable":true,"description":"Number of commits the app is behind the remote branch. `0` when in sync; `null` when unknown."},"syncStatus":{"type":"string","enum":["idle","syncing","in_sync","behind","error"],"description":"Derived sync status of the binding."},"lastError":{"type":"string","nullable":true,"description":"Most recent error message from a failed sync; cleared on the next successful sync."},"lastPushedChecksums":{"type":"object","nullable":true,"additionalProperties":{"type":"string"},"description":"Per-file checksum snapshot captured at the last successful push. `null` until the push flow is available."},"nameMap":{"type":"object","description":"Repo-side identity map for connections and webhooks. Empty until the first sync.","properties":{"connections":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}},"webhooks":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"createdByUserId":{"type":"integer","description":"ID of the user who created the binding."}}},"Scheduling":{"type":"object","properties":{"type":{"type":"string","enum":["immediately","indefinitely","once","daily","weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":0},"date":{"type":"string","format":"date-time"},"between":{"type":"array","items":{"type":"string","format":"date-time"}},"time":{"type":"string","pattern":"^[0-2]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?(\\\\.[0-9]+)?$"},"days":{"type":"array","items":{"type":"integer","minimum":0,"maximum":31}},"months":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12}},"restrict":{"type":"array","items":{"type":"object","properties":{"time":{"type":"array","items":{"type":"string","nullable":true,"pattern":"^[0-2]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?(\\\\.[0-9]+)?$"}},"days":{"type":"array","items":{"type":"integer","minimum":0,"maximum":31}},"months":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12}}}}},"maximum_runs_per_minute":{"type":"integer","nullable":true,"minimum":1,"maximum":10000}}},"Controller":{"type":"object","properties":{"name":{"type":"string","maxLength":120,"minLength":1},"description":{"type":"string","maxLength":1500,"minLength":0},"idSequence":{"type":"integer"},"modules":{"type":"object"}}},"HookLog":{"type":"object","properties":{"statusId":{"type":"integer"},"parser":{"type":"string"},"replayable":{"type":"boolean"},"sizes":{"type":"object","properties":{"before":{"type":"integer"},"after":{"type":"integer"}}},"loggedAt":{"type":"string","format":"date-time"},"udids":{"type":"array","items":{"type":"string"}},"typeId":{"type":"integer"},"id":{"type":"integer"},"appParser":{"type":"string"},"imtId":{"type":"string"}}},"HookLogDetail":{"type":"object","properties":{"statusId":{"type":"integer"},"parser":{"type":"string"},"replayable":{"type":"boolean"},"data":{"type":"object","properties":{"request":{"type":"object","properties":{"headers":{"type":"object","additionalProperties":{}},"method":{"type":"string"},"query":{"type":"object","additionalProperties":{}},"ip":{"type":"string"},"parsed":{"type":"string"},"body":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":{}}]},"url":{"type":"string"}}},"response":{"type":"object","properties":{"headers":{"type":"array","items":{"type":"string"}},"body":{"type":"string"},"status":{"type":"integer"}}}}},"sizes":{"type":"object","properties":{"before":{"type":"integer"},"after":{"type":"integer"}}},"loggedAt":{"type":"string","format":"date-time"},"udids":{"type":"array","items":{"type":"string"}},"typeId":{"type":"integer"},"id":{"type":"integer"},"appParser":{"type":"string"},"imtId":{"type":"string"}}},"ScenarioInterfaceInput":{"type":"object","additionalProperties":{},"description":"Contains the `input` array with specification of the scenario input parameters."},"ScenarioInterfaceOutput":{"type":"object","additionalProperties":{}},"Admin--Organizations":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"timezoneId":{"type":"number"},"countryId":{"type":"number"},"license":{"type":"object","additionalProperties":{}},"serviceName":{"type":"string"},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"externalId":{"type":"string"}}}},"isPaused":{"type":"boolean"},"zone":{"type":"string"},"externalId":{"type":"string"},"scenarios":{"type":"integer"},"activeScenarios":{"type":"integer"},"deleted":{"type":"boolean"}}},"CustomPropertyStructure-response":{"type":"object","properties":{"id":{"type":"integer"},"created":{"type":"string","format":"date-time"},"belongers":{"type":"array","items":{"type":"object","properties":{"belongerId":{"type":"integer"},"belongerType":{"type":"string"},"associatedTypes":{"type":"array","items":{"type":"string"}}}}}}},"CustomPropertyStructureItemEntity-response":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["boolean","number","shortText","longText","date","dropdown","multiselect"]},"required":{"type":"boolean"},"options":{"type":"array","nullable":true,"items":{"type":"object","properties":{"value":{"type":"string"}},"required":["value"]}}}},"CustomPropertyStructureItemEntityWithStructureId-response":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["boolean","number","shortText","longText","date","dropdown","multiselect"]},"required":{"type":"boolean"},"options":{"type":"array","nullable":true,"items":{"type":"object","properties":{"value":{"type":"string"}},"required":["value"]}}}},{"type":"object","properties":{"structureId":{"type":"integer"}}}]},"CustomPropertyStructureItem-requestBody-post":{"type":"object","properties":{"name":{"description":"The ID of the structure item. The `name` has to be unique in the custom properties structure.","type":"string"},"label":{"description":"Make displays the item label to users in the scenario table header.","type":"string"},"description":{"description":"The description of the custom property structure item. You can review the item description in the **Scenario properties** tab in the Organization dashboard.","type":"string"},"type":{"description":"The data type of the custom property structure item. The data types `dropdown` and `multiselect` allow you to specify available options for the item data.","type":"string","enum":["boolean","number","shortText","longText","date","dropdown","multiselect"]},"options":{"description":"The options available to users when filling in the item data. For the data types `dropdown` and `multiselect`, fill in an object like `{\"options\":[{\"value\": \"Marketing\"}, {\"value\": \"Sales\"}]}`.\nYou can omit the `options` parameter for the rest of the data types. "},"required":{"description":"Set to `true` in order to make a structure item required when adding custom property data. Default value is `false`.","type":"boolean"}},"required":["name","label","type"]},"CustomPropertyStructureItem-requestBody-patch":{"type":"object","properties":{"label":{"description":"Make displays the item label to users in the scenario table header.","type":"string"},"description":{"description":"The description of the custom property structure item. You can review the item description in the **Scenario properties** tab in the Organization dashboard.","type":"string"},"options":{"description":"The options available to users when filling in the item data. For the data types `dropdown` and `multiselect`, fill in an object like `{\"options\":[{\"value\": \"Marketing\"}, {\"value\": \"Sales\"}]}`.\nYou can omit the `options` parameter for the rest of the data types. "},"required":{"description":"Set to `true` if you require to fill in data to the structure item when adding custom property data. Default value is `false`.","type":"boolean"}}},"CustomAppBase":{"anyOf":[{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}}}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}}}}}]},"CustomAppGroups":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"type":"string"},"modules":{"type":"array","items":{"type":"string"}}},"required":["label","modules"]}},"CustomAppInstallSpecification":{},"CustomAppInstall":{},"CustomAppModuleApi":{"anyOf":[{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"respond":{"additionalProperties":false,"type":"object","properties":{"type":{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"}]},"status":{"anyOf":[{"minimum":100,"maximum":999,"type":"integer"},{"type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]}}},"verification":{"additionalProperties":false,"type":"object","properties":{"condition":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"respond":{"additionalProperties":false,"type":"object","properties":{"type":{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"}]},"status":{"anyOf":[{"minimum":100,"maximum":999,"type":"integer"},{"type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]}}}}},"repeat":{"description":"Repeats a request under a certain condition with a predefined delay in milliseconds. The maximum number of repeats can be bounded by the repeat.limit.","type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","type":"string"},"delay":{"description":"Specifies the delay in milliseconds.","type":"number"},"limit":{"description":"Specifies the maximum number of iterations.","type":"number"}}}}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"respond":{"additionalProperties":false,"type":"object","properties":{"type":{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"}]},"status":{"anyOf":[{"minimum":100,"maximum":999,"type":"integer"},{"type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]}}},"verification":{"additionalProperties":false,"type":"object","properties":{"condition":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"respond":{"additionalProperties":false,"type":"object","properties":{"type":{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"}]},"status":{"anyOf":[{"minimum":100,"maximum":999,"type":"integer"},{"type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]}}}}},"repeat":{"description":"Repeats a request under a certain condition with a predefined delay in milliseconds. The maximum number of repeats can be bounded by the repeat.limit.","type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","type":"string"},"delay":{"description":"Specifies the delay in milliseconds.","type":"number"},"limit":{"description":"Specifies the maximum number of iterations.","type":"number"}}}}}}]},"CustomAppModuleEpoch":{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Query string parameters","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"condition":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"repeat":{"description":"Repeats a request under a certain condition with a predefined delay in milliseconds. The maximum number of repeats can be bounded by the repeat.limit.","type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","type":"string"},"delay":{"description":"Specifies the delay in milliseconds.","type":"number"},"limit":{"description":"Specifies the maximum number of iterations.","type":"number"}}},"response":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"description":"Epoch module output format","additionalProperties":true,"type":"object","properties":{"date":{},"label":{}},"required":["date","label"]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}}},"required":["output"]}},"required":["response"]},"CustomAppModuleInterface":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"minLength":1,"maxLength":128,"type":"string"},"label":{"minLength":1,"maxLength":256,"type":"string"},"help":{"minLength":1,"type":"string"},"type":{"anyOf":[{"enum":["any"],"type":"string"},{"enum":["array"],"type":"string"},{"enum":["boolean"],"type":"string"},{"enum":["buffer"],"type":"string"},{"enum":["cert"],"type":"string"},{"enum":["collection"],"type":"string"},{"enum":["color"],"type":"string"},{"enum":["date"],"type":"string"},{"enum":["email"],"type":"string"},{"enum":["filename"],"type":"string"},{"enum":["folder"],"type":"string"},{"enum":["file"],"type":"string"},{"enum":["filter"],"type":"string"},{"enum":["hidden"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["integer"],"type":"string"},{"enum":["uinteger"],"type":"string"},{"enum":["number"],"type":"string"},{"enum":["password"],"type":"string"},{"enum":["path"],"type":"string"},{"enum":["pkey"],"type":"string"},{"enum":["port"],"type":"string"},{"enum":["select"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["time"],"type":"string"},{"enum":["timestamp"],"type":"string"},{"enum":["timezone"],"type":"string"},{"enum":["url"],"type":"string"},{"enum":["uuid"],"type":"string"},{"enum":["banner"],"type":"string"},{"enum":["udt"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"semantic":{"minLength":1,"type":"string"},"default":{"anyOf":[{"type":"boolean"},{"type":"array","items":{}},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]},"advanced":{"type":"boolean"},"required":{"type":"boolean"},"grouped":{"type":"boolean"},"dynamic":{"type":"boolean"},"multiline":{"type":"boolean"},"sort":{"type":"string"},"sequence":{"type":"boolean"},"schema":{},"tags":{"anyOf":[{"enum":["strip"],"type":"string"},{"enum":["stripall"],"type":"string"},{"enum":["escape"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"coder":{"type":"boolean"},"multiple":{"type":"boolean"},"visible":{"type":"string"},"convert":{"additionalProperties":false,"type":"object","properties":{"type":{"type":"string"},"format":{"type":"string"},"timezone":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"names":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"}},"required":["name"]}}]}},"required":["type"]},"editable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"enabled":{"type":"boolean"},"help":{"minLength":1,"type":"string"}},"required":["enabled"]}]},"mappable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"help":{"minLength":1,"type":"string"}},"required":["help"]}]},"time":{"type":"boolean"},"rpc":{"additionalProperties":false,"type":"object","properties":{"url":{"type":"string"},"label":{"type":"string"},"parameters":{"type":"array","items":{}}},"required":["url","label"]},"mode":{"anyOf":[{"enum":["edit"],"type":"string"},{"enum":["choose"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"labels":{"additionalProperties":{},"type":"object","properties":{}},"metadata":{"additionalProperties":{},"type":"object","properties":{}},"spec":{},"codepage":{"type":"string"},"pattern":{"type":"string"},"nested":{},"options":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"store":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}}]},"label":{"type":"string"},"value":{"type":"string"},"default":{"type":"string"},"learning":{"type":"boolean"},"placeholder":{"anyOf":[{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"label":{"type":"string"},"nested":{}}}]},"nested":{},"operators":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},"logic":{"type":"string"},"scope":{"anyOf":[{"type":"array","items":{"type":"string"}},{"additionalProperties":{"type":"array","items":{"type":"string"}},"type":"object","properties":{}}]},"ids":{"type":"boolean"},"showRoot":{"type":"boolean"},"singleLevel":{"type":"boolean"}}}]},"extension":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"validate":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"max":{"type":"number"},"min":{"type":"number"},"minItems":{"type":"integer"},"maxItems":{"type":"integer"},"pattern":{"type":"string"},"enum":{"type":"array","items":{}}}}]},"title":{"type":"string"},"text":{"type":"string"},"closable":{"type":"boolean"},"theme":{"type":"string"},"badge":{"type":"string"}},"required":["type"]}},{"type":"string"}]},"CustomAppModuleParameters":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"minLength":1,"maxLength":128,"type":"string"},"label":{"minLength":1,"maxLength":256,"type":"string"},"help":{"minLength":1,"type":"string"},"type":{"anyOf":[{"enum":["any"],"type":"string"},{"enum":["array"],"type":"string"},{"enum":["boolean"],"type":"string"},{"enum":["buffer"],"type":"string"},{"enum":["cert"],"type":"string"},{"enum":["collection"],"type":"string"},{"enum":["color"],"type":"string"},{"enum":["date"],"type":"string"},{"enum":["email"],"type":"string"},{"enum":["filename"],"type":"string"},{"enum":["folder"],"type":"string"},{"enum":["file"],"type":"string"},{"enum":["filter"],"type":"string"},{"enum":["hidden"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["integer"],"type":"string"},{"enum":["uinteger"],"type":"string"},{"enum":["number"],"type":"string"},{"enum":["password"],"type":"string"},{"enum":["path"],"type":"string"},{"enum":["pkey"],"type":"string"},{"enum":["port"],"type":"string"},{"enum":["select"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["time"],"type":"string"},{"enum":["timestamp"],"type":"string"},{"enum":["timezone"],"type":"string"},{"enum":["url"],"type":"string"},{"enum":["uuid"],"type":"string"},{"enum":["banner"],"type":"string"},{"enum":["udt"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"semantic":{"minLength":1,"type":"string"},"default":{"anyOf":[{"type":"boolean"},{"type":"array","items":{}},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]},"advanced":{"type":"boolean"},"required":{"type":"boolean"},"grouped":{"type":"boolean"},"dynamic":{"type":"boolean"},"multiline":{"type":"boolean"},"sort":{"type":"string"},"sequence":{"type":"boolean"},"schema":{},"tags":{"anyOf":[{"enum":["strip"],"type":"string"},{"enum":["stripall"],"type":"string"},{"enum":["escape"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"coder":{"type":"boolean"},"multiple":{"type":"boolean"},"visible":{"type":"string"},"convert":{"additionalProperties":false,"type":"object","properties":{"type":{"type":"string"},"format":{"type":"string"},"timezone":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"names":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"}},"required":["name"]}}]}},"required":["type"]},"editable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"enabled":{"type":"boolean"},"help":{"minLength":1,"type":"string"}},"required":["enabled"]}]},"mappable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"help":{"minLength":1,"type":"string"}},"required":["help"]}]},"time":{"type":"boolean"},"rpc":{"additionalProperties":false,"type":"object","properties":{"url":{"type":"string"},"label":{"type":"string"},"parameters":{"type":"array","items":{}}},"required":["url","label"]},"mode":{"anyOf":[{"enum":["edit"],"type":"string"},{"enum":["choose"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"labels":{"additionalProperties":{},"type":"object","properties":{}},"metadata":{"additionalProperties":{},"type":"object","properties":{}},"spec":{},"codepage":{"type":"string"},"pattern":{"type":"string"},"nested":{},"options":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"store":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}}]},"label":{"type":"string"},"value":{"type":"string"},"default":{"type":"string"},"learning":{"type":"boolean"},"placeholder":{"anyOf":[{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"label":{"type":"string"},"nested":{}}}]},"nested":{},"operators":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},"logic":{"type":"string"},"scope":{"anyOf":[{"type":"array","items":{"type":"string"}},{"additionalProperties":{"type":"array","items":{"type":"string"}},"type":"object","properties":{}}]},"ids":{"type":"boolean"},"showRoot":{"type":"boolean"},"singleLevel":{"type":"boolean"}}}]},"extension":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"validate":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"max":{"type":"number"},"min":{"type":"number"},"minItems":{"type":"integer"},"maxItems":{"type":"integer"},"pattern":{"type":"string"},"enum":{"type":"array","items":{}}}}]},"title":{"type":"string"},"text":{"type":"string"},"closable":{"type":"boolean"},"theme":{"type":"string"},"badge":{"type":"string"}},"required":["type"]}},{"type":"string"}]},"CustomAppModuleSamples":{"additionalProperties":{},"type":"object","properties":{}},"CustomAppModuleScope":{"type":"array","items":{"minLength":1,"maxLength":512,"type":"string"}},"CustomAppModuleCreateResponse":{"additionalProperties":false,"example":[{"appModule":{"name":"getInvoices","label":"Get Invoices","description":"Retrieves a list of invoices from the system.","typeId":4,"crud":null,"connection":null,"webhook":null}}],"type":"object","properties":{"appModule":{"type":"object","properties":{"name":{"minLength":3,"maxLength":128,"example":["getInvoices","createPdf","setMode"],"description":"The name of the module.","type":"string"},"label":{"maxLength":128,"type":"string"},"description":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"string","nullable":true}]},"typeId":{"maxLength":128,"type":"number"},"crud":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"string","nullable":true}]},"connection":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"string","nullable":true}]},"webhook":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"string","nullable":true}]}}}},"required":["appModule"]},"CustomAppModule":{"additionalProperties":false,"type":"object","properties":{"name":{"minLength":3,"maxLength":128,"example":["getInvoices","createPdf","setMode"],"description":"The name of the module.","type":"string"},"label":{"maxLength":128,"type":"string"},"description":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"string","nullable":true}]},"typeId":{"maxLength":128,"type":"number"},"crud":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"string","nullable":true}]},"connection":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"string","nullable":true}]},"webhook":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"string","nullable":true}]}}},"CustomAppCreateRequest":{"example":[{"name":"postman","label":"Postman App","description":"API testing and collaboration tool.","theme":"#FF00FF"},{"name":"slack","label":"Slack","description":"Team communication and collaboration platform.","theme":"#6ba559"},{"name":"github","label":"GitHub","description":"Code hosting and version control platform.","theme":"#181717"}],"type":"object","allOf":[{"additionalProperties":false,"type":"object","properties":{"label":{"maxLength":128,"example":["Instagram for Business","Canva","Airtable"],"description":"The label of your custom app. This field is required, and users will see it in the app list.","type":"string"}},"required":["label"]},{"additionalProperties":false,"type":"object","properties":{"name":{"pattern":"^[a-z][0-9a-z-]+[0-9a-z]$","default":"custom-app","minLength":3,"maxLength":30,"example":["instagram","canva","airtable"],"description":"The name of an app. The postfix \"-[a-z0-9]{6}\" is added so the name is always unique, and you need to work with the generated name from the response.","type":"string"},"description":{"anyOf":[{"maxLength":512,"description":"Description of your custom app. This field is optional.","type":"string"},{"type":"string","nullable":true}]},"theme":{"pattern":"^#(?:[0-9a-fA-F]{3}){1,2}$","default":"#cccccc","example":["#229f3b","#89ebbf","#29c067","#3470c4","#98253b","#2c9e40"],"description":"The color that Make uses for your custom app modules and forms.","type":"string"},"version":{"default":1,"description":"Always use version 1. Any higher value is for internal purposes and is not supported by the API.","minimum":1,"type":"integer"}}}]},"CustomAppCreateResponse":{"example":[{"app":{"name":"postman-9m92ur","label":"Postman App","theme":"#FF00FF","public":false,"approved":false,"version":1}},{"app":{"name":"slack-9a72qr","label":"Slack","theme":"#6ba559","public":false,"approved":false,"version":1}},{"app":{"name":"github-a1bcuq","label":"GitHub","theme":"#181717","public":false,"approved":false,"version":1}}],"type":"object","properties":{"app":{"additionalProperties":false,"type":"object","properties":{"name":{"pattern":"^[a-z][0-9a-z-]+[0-9a-z]$","default":"custom-app","minLength":3,"maxLength":30,"example":["instagram","canva","airtable"],"description":"The name of an app. The postfix \"-[a-z0-9]{6}\" is added so the name is always unique, and you need to work with the generated name from the response.","type":"string"},"label":{"maxLength":128,"example":["Instagram for Business","Canva","Airtable"],"description":"The label of your custom app. This field is required, and users will see it in the app list.","type":"string"},"version":{"default":1,"description":"Always use version 1. Any higher value is for internal purposes and is not supported by the API.","minimum":1,"type":"integer"},"theme":{"pattern":"^#(?:[0-9a-fA-F]{3}){1,2}$","default":"#cccccc","example":["#229f3b","#89ebbf","#29c067","#3470c4","#98253b","#2c9e40"],"description":"The color that Make uses for your custom app modules and forms.","type":"string"},"public":{"description":"If you want to share your app outside of your organization, you will need to publish your app, so the invite link is generated.","default":false,"type":"boolean"},"approved":{"description":"Globally available app.","default":false,"type":"boolean"}},"required":["label"]}},"required":["app"]},"CustomAppListResponse":{"example":[{"name":"postman-9m92ur","label":"Postman App","version":1,"versionFull":"1.0.0","beta":true},{"name":"slack-9a72qr","label":"Slack","version":1,"versionFull":"1.1.3","beta":true},{"name":"github-a1bcuq","label":"GitHub","version":1,"versionFull":"1.15.2","beta":false}],"type":"object","properties":{"apps":{"additionalProperties":false,"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"pattern":"^[a-z][0-9a-z-]+[0-9a-z]$","default":"custom-app","minLength":3,"maxLength":30,"example":["instagram","canva","airtable"],"description":"The name of an app. The postfix \"-[a-z0-9]{6}\" is added so the name is always unique, and you need to work with the generated name from the response.","type":"string"},"label":{"maxLength":128,"example":["Instagram for Business","Canva","Airtable"],"description":"The label of your custom app. This field is required, and users will see it in the app list.","type":"string"},"description":{"anyOf":[{"maxLength":512,"description":"Description of your custom app. This field is optional.","type":"string"},{"type":"string","nullable":true}]},"version":{"default":1,"description":"Always use version 1. Any higher value is for internal purposes and is not supported by the API.","minimum":1,"type":"integer"},"versionFull":{"default":"1.0.0","description":"Full semantic version of an app.","type":"string"},"theme":{"pattern":"^#(?:[0-9a-fA-F]{3}){1,2}$","default":"#cccccc","example":["#229f3b","#89ebbf","#29c067","#3470c4","#98253b","#2c9e40"],"description":"The color that Make uses for your custom app modules and forms.","type":"string"},"language":{"default":"en","example":["en","de","es","fr","it","ja","ko","pt"],"description":"The language of your custom app and its descriptions.","type":"string"},"origin":{"anyOf":[{"default":false,"description":"The origin zone where the app was created.","type":"string"},{"type":"string","nullable":true}]},"opensource":{"default":false,"description":"Deprecated. Make will introduce a different way of sharing open-source apps.","type":"boolean"},"inReview":{"default":false,"description":"Once published, a user can submit their app for review and approval by clicking Request approval. The custom app then appears with a ✓ in the In review column of Administration > Apps.","type":"boolean"},"beta":{"default":true,"type":"boolean"},"public":{"description":"If you want to share your app outside of your organization, you will need to publish your app, so the invite link is generated.","default":false,"type":"boolean"},"approved":{"description":"Globally available app.","default":false,"type":"boolean"},"modules":{},"changes":{},"audience":{"default":"global","description":"Deprecated. This parameter has no effect currently. The custom app is accessible regardless of the user's country.","anyOf":[{"enum":["global"],"type":"string"},{"enum":["countries"],"type":"string"}]},"countries":{"default":"countries","example":["al","aq","be"],"description":"Deprecated. When the audience is countries, you can specify which countries the app is meant for.","type":"string"}},"required":["label"]}}},"required":["apps"]},"CustomApp":{"additionalProperties":false,"type":"object","properties":{"name":{"pattern":"^[a-z][0-9a-z-]+[0-9a-z]$","default":"custom-app","minLength":3,"maxLength":30,"example":["instagram","canva","airtable"],"description":"The name of an app. The postfix \"-[a-z0-9]{6}\" is added so the name is always unique, and you need to work with the generated name from the response.","type":"string"},"label":{"maxLength":128,"example":["Instagram for Business","Canva","Airtable"],"description":"The label of your custom app. This field is required, and users will see it in the app list.","type":"string"},"description":{"anyOf":[{"maxLength":512,"description":"Description of your custom app. This field is optional.","type":"string"},{"type":"string","nullable":true}]},"version":{"default":1,"description":"Always use version 1. Any higher value is for internal purposes and is not supported by the API.","minimum":1,"type":"integer"},"versionFull":{"default":"1.0.0","description":"Full semantic version of an app.","type":"string"},"theme":{"pattern":"^#(?:[0-9a-fA-F]{3}){1,2}$","default":"#cccccc","example":["#229f3b","#89ebbf","#29c067","#3470c4","#98253b","#2c9e40"],"description":"The color that Make uses for your custom app modules and forms.","type":"string"},"language":{"default":"en","example":["en","de","es","fr","it","ja","ko","pt"],"description":"The language of your custom app and its descriptions.","type":"string"},"origin":{"anyOf":[{"default":false,"description":"The origin zone where the app was created.","type":"string"},{"type":"string","nullable":true}]},"opensource":{"default":false,"description":"Deprecated. Make will introduce a different way of sharing open-source apps.","type":"boolean"},"inReview":{"default":false,"description":"Once published, a user can submit their app for review and approval by clicking Request approval. The custom app then appears with a ✓ in the In review column of Administration > Apps.","type":"boolean"},"beta":{"default":true,"type":"boolean"},"public":{"description":"If you want to share your app outside of your organization, you will need to publish your app, so the invite link is generated.","default":false,"type":"boolean"},"approved":{"description":"Globally available app.","default":false,"type":"boolean"},"modules":{},"changes":{},"audience":{"default":"global","description":"Deprecated. This parameter has no effect currently. The custom app is accessible regardless of the user's country.","anyOf":[{"enum":["global"],"type":"string"},{"enum":["countries"],"type":"string"}]},"countries":{"default":"countries","example":["al","aq","be"],"description":"Deprecated. When the audience is countries, you can specify which countries the app is meant for.","type":"string"}},"required":["label"]},"CustomAppModuleExpect":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"minLength":1,"maxLength":128,"type":"string"},"label":{"minLength":1,"maxLength":256,"type":"string"},"help":{"minLength":1,"type":"string"},"type":{"anyOf":[{"enum":["any"],"type":"string"},{"enum":["array"],"type":"string"},{"enum":["boolean"],"type":"string"},{"enum":["buffer"],"type":"string"},{"enum":["cert"],"type":"string"},{"enum":["collection"],"type":"string"},{"enum":["color"],"type":"string"},{"enum":["date"],"type":"string"},{"enum":["email"],"type":"string"},{"enum":["filename"],"type":"string"},{"enum":["folder"],"type":"string"},{"enum":["file"],"type":"string"},{"enum":["filter"],"type":"string"},{"enum":["hidden"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["integer"],"type":"string"},{"enum":["uinteger"],"type":"string"},{"enum":["number"],"type":"string"},{"enum":["password"],"type":"string"},{"enum":["path"],"type":"string"},{"enum":["pkey"],"type":"string"},{"enum":["port"],"type":"string"},{"enum":["select"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["time"],"type":"string"},{"enum":["timestamp"],"type":"string"},{"enum":["timezone"],"type":"string"},{"enum":["url"],"type":"string"},{"enum":["uuid"],"type":"string"},{"enum":["banner"],"type":"string"},{"enum":["udt"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"semantic":{"minLength":1,"type":"string"},"default":{"anyOf":[{"type":"boolean"},{"type":"array","items":{}},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]},"advanced":{"type":"boolean"},"required":{"type":"boolean"},"grouped":{"type":"boolean"},"dynamic":{"type":"boolean"},"multiline":{"type":"boolean"},"sort":{"type":"string"},"sequence":{"type":"boolean"},"schema":{},"tags":{"anyOf":[{"enum":["strip"],"type":"string"},{"enum":["stripall"],"type":"string"},{"enum":["escape"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"coder":{"type":"boolean"},"multiple":{"type":"boolean"},"visible":{"type":"string"},"convert":{"additionalProperties":false,"type":"object","properties":{"type":{"type":"string"},"format":{"type":"string"},"timezone":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"names":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"}},"required":["name"]}}]}},"required":["type"]},"editable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"enabled":{"type":"boolean"},"help":{"minLength":1,"type":"string"}},"required":["enabled"]}]},"mappable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"help":{"minLength":1,"type":"string"}},"required":["help"]}]},"time":{"type":"boolean"},"rpc":{"additionalProperties":false,"type":"object","properties":{"url":{"type":"string"},"label":{"type":"string"},"parameters":{"type":"array","items":{}}},"required":["url","label"]},"mode":{"anyOf":[{"enum":["edit"],"type":"string"},{"enum":["choose"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"labels":{"additionalProperties":{},"type":"object","properties":{}},"metadata":{"additionalProperties":{},"type":"object","properties":{}},"spec":{},"codepage":{"type":"string"},"pattern":{"type":"string"},"nested":{},"options":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"store":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}}]},"label":{"type":"string"},"value":{"type":"string"},"default":{"type":"string"},"learning":{"type":"boolean"},"placeholder":{"anyOf":[{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"label":{"type":"string"},"nested":{}}}]},"nested":{},"operators":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},"logic":{"type":"string"},"scope":{"anyOf":[{"type":"array","items":{"type":"string"}},{"additionalProperties":{"type":"array","items":{"type":"string"}},"type":"object","properties":{}}]},"ids":{"type":"boolean"},"showRoot":{"type":"boolean"},"singleLevel":{"type":"boolean"}}}]},"extension":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"validate":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"max":{"type":"number"},"min":{"type":"number"},"minItems":{"type":"integer"},"maxItems":{"type":"integer"},"pattern":{"type":"string"},"enum":{"type":"array","items":{}}}}]},"title":{"type":"string"},"text":{"type":"string"},"closable":{"type":"boolean"},"theme":{"type":"string"},"badge":{"type":"string"}},"required":["type"]}},{"type":"string"}]},"managedOrganization":{"type":"object","properties":{"organizationId":{"type":"integer"},"organizationName":{"type":"string"},"operationsAllocated":{"type":"integer"},"countryId":{"type":"integer"},"timezoneId":{"type":"integer"},"zoneId":{"type":"integer"},"zoneDomain":{"type":"string"},"zoneName":{"type":"string"}}},"managedOrganizationConsumption":{"type":"object","properties":{"organizationId":{"type":"integer"},"centicreditsConsumed":{"type":"string"},"centicreditsExtra":{"type":"string"},"operationsConsumed":{"type":"number"},"operationsExtra":{"type":"number"},"transferConsumed":{"type":"number"},"transferExtra":{"type":"number"},"lastReset":{"type":"string","format":"date-time"}}},"CustomRole":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the custom role.","example":42},"name":{"type":"string","description":"The name of the custom role.","example":"Custom Viewer"},"category":{"type":"string","enum":["organization","team"],"description":"Whether the role applies to the organization or a team.","example":"organization"},"managementType":{"type":"string","enum":["custom_managed"],"description":"The management type of the role. Always `custom_managed` for custom roles.","example":"custom_managed"},"description":{"type":"string","nullable":true,"description":"The description of the custom role.","example":"Read-only access to organization resources."},"permissions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","example":101},"name":{"type":"string","example":"scenarios get"}}},"description":"List of permissions assigned to the custom role."}}},"CredentialRequestStatus":{"type":"string","description":"Status of the credential request.","enum":["authorized","declined","incomplete","invalid","partially_authorized","pending"]},"CredentialState":{"type":"string","description":"State of an individual credential.","enum":["authorized","declined","incomplete","invalid","pending","reauthorizing"]},"CredentialComponent":{"type":"string","description":"Component type of the credential.","enum":["account","keychain"]},"CredentialType":{"type":"string","description":"Type of the credential.","enum":["oauth","basic","key"]},"CredentialRequest":{"type":"object","description":"A credential request object.","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential request."},"organizationId":{"type":"integer","description":"ID of the organization the request belongs to."},"teamId":{"type":"integer","description":"ID of the team the request belongs to."},"userId":{"type":"integer","description":"ID of the user who created the request."},"name":{"type":"string","description":"Name of the credential request."},"description":{"type":"string","description":"Description of the credential request."},"externalProviderId":{"type":"number","nullable":true,"description":"External provider identifier."},"makeProviderId":{"type":"number","nullable":true,"description":"Make provider identifier."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the request was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the request was last updated."},"expiresAt":{"type":"string","format":"date-time","description":"Timestamp when the request expires."},"status":{"type":"string","description":"Status of the credential request.","enum":["authorized","declined","incomplete","invalid","partially_authorized","pending"]},"shouldSendEmail":{"type":"boolean","description":"Whether an email should be sent for this request."},"emailSentAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the email was sent."}}},"CredentialRequestListItem":{"type":"object","description":"A credential request list item with optional provider information.","allOf":[{"type":"object","description":"A credential request object.","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential request."},"organizationId":{"type":"integer","description":"ID of the organization the request belongs to."},"teamId":{"type":"integer","description":"ID of the team the request belongs to."},"userId":{"type":"integer","description":"ID of the user who created the request."},"name":{"type":"string","description":"Name of the credential request."},"description":{"type":"string","description":"Description of the credential request."},"externalProviderId":{"type":"number","nullable":true,"description":"External provider identifier."},"makeProviderId":{"type":"number","nullable":true,"description":"Make provider identifier."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the request was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the request was last updated."},"expiresAt":{"type":"string","format":"date-time","description":"Timestamp when the request expires."},"status":{"type":"string","description":"Status of the credential request.","enum":["authorized","declined","incomplete","invalid","partially_authorized","pending"]},"shouldSendEmail":{"type":"boolean","description":"Whether an email should be sent for this request."},"emailSentAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the email was sent."}}},{"type":"object","properties":{"appNames":{"type":"array","items":{"type":"string"},"description":"Names of apps associated with this request."},"makeProvider":{"type":"object","nullable":true,"description":"Make provider information.","properties":{"id":{"type":"integer","description":"Provider user ID."},"email":{"type":"string","description":"Provider email address."},"name":{"type":"string","description":"Provider name."}}}}}]},"CredentialRequestWithProvider":{"type":"object","description":"A credential request with detailed provider information.","allOf":[{"type":"object","description":"A credential request object.","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential request."},"organizationId":{"type":"integer","description":"ID of the organization the request belongs to."},"teamId":{"type":"integer","description":"ID of the team the request belongs to."},"userId":{"type":"integer","description":"ID of the user who created the request."},"name":{"type":"string","description":"Name of the credential request."},"description":{"type":"string","description":"Description of the credential request."},"externalProviderId":{"type":"number","nullable":true,"description":"External provider identifier."},"makeProviderId":{"type":"number","nullable":true,"description":"Make provider identifier."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the request was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the request was last updated."},"expiresAt":{"type":"string","format":"date-time","description":"Timestamp when the request expires."},"status":{"type":"string","description":"Status of the credential request.","enum":["authorized","declined","incomplete","invalid","partially_authorized","pending"]},"shouldSendEmail":{"type":"boolean","description":"Whether an email should be sent for this request."},"emailSentAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the email was sent."}}},{"type":"object","properties":{"makeProvider":{"type":"object","nullable":true,"description":"Make provider information.","properties":{"id":{"type":"integer"},"email":{"type":"string"},"name":{"type":"string"}}}}}]},"Credential":{"type":"object","description":"A credential object (connection or key).","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential."},"requestId":{"type":"string","format":"uuid","description":"ID of the parent credential request."},"component":{"type":"string","description":"Component type of the credential.","enum":["account","keychain"]},"type":{"type":"string","description":"Type of the credential.","enum":["oauth","basic","key"]},"name":{"type":"string","description":"Internal name of the credential."},"label":{"type":"string","description":"Display label for the credential."},"description":{"type":"string","description":"Description of the credential."},"scope":{"type":"array","items":{"type":"string"},"description":"Requested scopes for the credential."},"remoteId":{"type":"string","description":"Remote identifier after creation."},"remoteScope":{"type":"array","items":{"type":"string"},"description":"Scopes granted by the remote service."},"tokenId":{"type":"string","format":"uuid","description":"Associated token ID."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the credential was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the credential was last updated."},"state":{"type":"string","description":"State of an individual credential.","enum":["authorized","declined","incomplete","invalid","pending","reauthorizing"]},"declineReason":{"type":"string","description":"Reason for declining the credential."},"appName":{"type":"string","description":"Name of the application associated with this credential."},"appModules":{"type":"array","items":{"type":"string"},"description":"Modules within the application that use this credential."},"appVersion":{"type":"string","description":"Version of the application."},"nameOverride":{"type":"string","description":"Custom name override for the credential."}}},"CredentialRequestCreateBody":{"type":"object","additionalProperties":false,"description":"Request body for creating a new Credential Request. Supports two provider flows - inviting a new user or referencing an existing Make user.","required":["name","teamId","provider"],"properties":{"name":{"type":"string","maxLength":255,"description":"Name of the Request which will be displayed to the End Users who open it."},"teamId":{"type":"number","description":"ID of the Team the Credential Request should be bound to."},"description":{"type":"string","maxLength":512,"description":"Description of the Request which will be displayed to the End Users who open it."},"connections":{"type":"array","maxItems":32,"description":"Array of connections to include in the request.","items":{"type":"object","additionalProperties":false,"required":["type","appName","appModules","appVersion"],"properties":{"type":{"type":"string","maxLength":64,"description":"Type of the Connection to be included in the Request."},"label":{"type":"string","maxLength":128,"description":"Label of the Connection to be used instead of the default generated one."},"description":{"type":"string","maxLength":512,"description":"Description of the particular Connection to be displayed in the Request view."},"scope":{"type":"array","items":{"type":"string","maxLength":128},"description":"Array of Scopes that the Connection should ask for."},"nameOverride":{"type":"string","maxLength":255,"minLength":1,"description":"An optional name to use for the credential when created in the platform, overriding the default generated name."},"appName":{"type":"string","maxLength":255,"description":"Name of the application that this credential is associated with."},"appModules":{"type":"array","items":{"type":"string","maxLength":255},"description":"Array of modules/components within the application that will use this credential."},"appVersion":{"type":"string","maxLength":64,"description":"Version of the application at the time the credential was created."}}}},"keys":{"type":"array","maxItems":32,"description":"Array of keys to include in the request.","items":{"type":"object","additionalProperties":false,"required":["type","appName","appModules","appVersion"],"properties":{"type":{"type":"string","maxLength":64,"description":"Type of the Key to be included in the Request."},"label":{"type":"string","maxLength":128,"description":"Label of the Key to be used instead of the default generated one."},"description":{"type":"string","maxLength":512,"description":"Description of the particular Key to be displayed in the Request view."},"nameOverride":{"type":"string","maxLength":255,"minLength":1,"description":"An optional name to use for the credential when created in the platform, overriding the default generated name."},"appName":{"type":"string","maxLength":255,"description":"Name of the application that this credential is associated with."},"appModules":{"type":"array","items":{"type":"string","maxLength":255},"description":"Array of modules/components within the application that will use this credential."},"appVersion":{"type":"string","maxLength":64,"description":"Version of the application at the time the credential was created."}}}},"provider":{"description":"Provider information. Either an existing Make user ID or a new user to invite (name & email).","oneOf":[{"type":"object","additionalProperties":false,"required":["providerMakeUserId"],"description":"Existing Make user as provider. The user will be added to the team if not already a member.","properties":{"providerMakeUserId":{"type":"number","description":"ID of the Provider's Make User. The user will be added to the team that owns the credential request."}}},{"type":"object","required":["newUser"],"description":"New user to invite to the organization and add to the team.","properties":{"newUser":{"type":"object","additionalProperties":false,"description":"New user to invite to the organization and add to the team.","required":["name","email"],"properties":{"name":{"type":"string","maxLength":255,"description":"Name of the new user to invite."},"email":{"type":"string","maxLength":256,"description":"Email address of the new user to invite."}}}}}]}}},"CredentialConnectionItem":{"type":"object","additionalProperties":false,"required":["type","appName","appModules","appVersion"],"properties":{"type":{"type":"string","maxLength":64,"description":"Type of the Connection to be included in the Request."},"label":{"type":"string","maxLength":128,"description":"Label of the Connection to be used instead of the default generated one."},"description":{"type":"string","maxLength":512,"description":"Description of the particular Connection to be displayed in the Request view."},"scope":{"type":"array","items":{"type":"string","maxLength":128},"description":"Array of Scopes that the Connection should ask for."},"nameOverride":{"type":"string","maxLength":255,"minLength":1,"description":"An optional name to use for the credential when created in the platform, overriding the default generated name."},"appName":{"type":"string","maxLength":255,"description":"Name of the application that this credential is associated with."},"appModules":{"type":"array","items":{"type":"string","maxLength":255},"description":"Array of modules/components within the application that will use this credential."},"appVersion":{"type":"string","maxLength":64,"description":"Version of the application at the time the credential was created."}}},"CredentialKeyItem":{"type":"object","additionalProperties":false,"required":["type","appName","appModules","appVersion"],"properties":{"type":{"type":"string","maxLength":64,"description":"Type of the Key to be included in the Request."},"label":{"type":"string","maxLength":128,"description":"Label of the Key to be used instead of the default generated one."},"description":{"type":"string","maxLength":512,"description":"Description of the particular Key to be displayed in the Request view."},"nameOverride":{"type":"string","maxLength":255,"minLength":1,"description":"An optional name to use for the credential when created in the platform, overriding the default generated name."},"appName":{"type":"string","maxLength":255,"description":"Name of the application that this credential is associated with."},"appModules":{"type":"array","items":{"type":"string","maxLength":255},"description":"Array of modules/components within the application that will use this credential."},"appVersion":{"type":"string","maxLength":64,"description":"Version of the application at the time the credential was created."}}},"CredentialProviderExisting":{"type":"object","additionalProperties":false,"required":["providerMakeUserId"],"description":"Existing Make user as provider. The user will be added to the team if not already a member.","properties":{"providerMakeUserId":{"type":"number","description":"ID of the Provider's Make User. The user will be added to the team that owns the credential request."}}},"CredentialProviderNew":{"type":"object","required":["newUser"],"description":"New user to invite to the organization and add to the team.","properties":{"newUser":{"type":"object","additionalProperties":false,"description":"New user to invite to the organization and add to the team.","required":["name","email"],"properties":{"name":{"type":"string","maxLength":255,"description":"Name of the new user to invite."},"email":{"type":"string","maxLength":256,"description":"Email address of the new user to invite."}}}}},"CredentialDeclineBody":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":2048,"description":"The reason why the credential was declined. This will be visible to support teams and helps with troubleshooting."}}},"ActionCreateBody":{"type":"object","description":"Request body for creating a new action for credential creation.","properties":{"name":{"type":"string","maxLength":255,"description":"Name of the Request which will be displayed to the End Users who open it."},"description":{"type":"string","maxLength":512,"description":"Description of the Request which will be displayed to the End Users who open it."},"connection":{"type":"object","required":["teamId","accountName"],"description":"Connection creation parameters for action.","properties":{"teamId":{"type":"integer","minimum":1,"description":"ID of the Team to which the Connection will belong."},"accountName":{"type":"string","minLength":1,"description":"Name of the Connection account type to be created via the Action."},"name":{"type":"string","minLength":1,"description":"Human-readable name for the Connection to be created via the Action."},"scopes":{"type":"array","minItems":1,"items":{"type":"string","maxLength":128},"description":"Array of Scopes to be added."},"appName":{"type":"string","maxLength":255,"description":"Name of the application that this credential is associated with."},"appModules":{"type":"array","items":{"type":"string","maxLength":255},"description":"Array of modules/components within the application that will use this credential."},"appVersion":{"type":"string","maxLength":64,"description":"Version of the application at the time the credential was created."}}},"key":{"type":"object","required":["teamId","type"],"description":"Key creation parameters for action.","properties":{"teamId":{"type":"integer","minimum":1,"description":"ID of the Team to which the Key will belong."},"type":{"type":"string","minLength":1,"description":"Type identifier for the Key to be created via the Action."},"name":{"type":"string","minLength":1,"description":"Human-readable name for the Key to be created via the Action."},"appName":{"type":"string","maxLength":255,"description":"Name of the application that this credential is associated with."},"appModules":{"type":"array","items":{"type":"string","maxLength":255},"description":"Array of modules/components within the application that will use this credential."},"appVersion":{"type":"string","maxLength":64,"description":"Version of the application at the time the credential was created."}}}}},"ActionConnectionCreate":{"type":"object","required":["teamId","accountName"],"description":"Connection creation parameters for action.","properties":{"teamId":{"type":"integer","minimum":1,"description":"ID of the Team to which the Connection will belong."},"accountName":{"type":"string","minLength":1,"description":"Name of the Connection account type to be created via the Action."},"name":{"type":"string","minLength":1,"description":"Human-readable name for the Connection to be created via the Action."},"scopes":{"type":"array","minItems":1,"items":{"type":"string","maxLength":128},"description":"Array of Scopes to be added."},"appName":{"type":"string","maxLength":255,"description":"Name of the application that this credential is associated with."},"appModules":{"type":"array","items":{"type":"string","maxLength":255},"description":"Array of modules/components within the application that will use this credential."},"appVersion":{"type":"string","maxLength":64,"description":"Version of the application at the time the credential was created."}}},"ActionKeyCreate":{"type":"object","required":["teamId","type"],"description":"Key creation parameters for action.","properties":{"teamId":{"type":"integer","minimum":1,"description":"ID of the Team to which the Key will belong."},"type":{"type":"string","minLength":1,"description":"Type identifier for the Key to be created via the Action."},"name":{"type":"string","minLength":1,"description":"Human-readable name for the Key to be created via the Action."},"appName":{"type":"string","maxLength":255,"description":"Name of the application that this credential is associated with."},"appModules":{"type":"array","items":{"type":"string","maxLength":255},"description":"Array of modules/components within the application that will use this credential."},"appVersion":{"type":"string","maxLength":64,"description":"Version of the application at the time the credential was created."}}},"ActionCreateResponse":{"type":"object","required":["request","publicUri"],"properties":{"request":{"type":"object","description":"A credential request object.","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential request."},"organizationId":{"type":"integer","description":"ID of the organization the request belongs to."},"teamId":{"type":"integer","description":"ID of the team the request belongs to."},"userId":{"type":"integer","description":"ID of the user who created the request."},"name":{"type":"string","description":"Name of the credential request."},"description":{"type":"string","description":"Description of the credential request."},"externalProviderId":{"type":"number","nullable":true,"description":"External provider identifier."},"makeProviderId":{"type":"number","nullable":true,"description":"Make provider identifier."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the request was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the request was last updated."},"expiresAt":{"type":"string","format":"date-time","description":"Timestamp when the request expires."},"status":{"type":"string","description":"Status of the credential request.","enum":["authorized","declined","incomplete","invalid","partially_authorized","pending"]},"shouldSendEmail":{"type":"boolean","description":"Whether an email should be sent for this request."},"emailSentAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the email was sent."}}},"publicUri":{"type":"string","format":"uri","description":"Public URI for completing the action."}}}},"parameters":{"PgSortBy":{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},"PgSortById":{"name":"pg[sortBy]","in":"query","schema":{"type":"string","enum":["id"]},"description":"The value that will be used to sort returned entities by."},"PgSortByName":{"name":"pg[sortBy]","in":"query","schema":{"type":"string","enum":["name"]},"description":"The value that will be used to sort returned entities by."},"PgSortByCustomProperties":{"name":"pg[sortBy]","in":"query","schema":{"type":"string","enum":["id","name","label","description","type","required"]},"description":"Specify the custom property item attribute. The custom property items in the response are sorted by the value of the attribute."},"PgOffset":{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},"PgSortDir":{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},"PgLimit":{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."},"TemplateId":{"name":"templateId","in":"path","schema":{"type":"integer"},"required":true,"description":"The unique ID of the private template. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint.","example":164},"TemplateUrl":{"name":"templateUrl","in":"path","schema":{"type":"string"},"required":true,"description":"The unique URL of the public (approved) template consisting of the template ID and name. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint.","example":"16-multiple-apps-template-example"},"TemplatePublicId":{"name":"templatePublicId","in":"query","schema":{"type":"integer"},"description":"The unique ID of the public version of the approved template. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint as one of the following IDs: `publishedId` for all published templates that are waiting for approval or not, or `approvedId` for approved templates.","example":18},"TemplateUsedApps":{"name":"usedApps[]","in":"query","schema":{"type":"array","items":{"type":"string"}},"example":["http"],"description":"The array with the text IDs of the apps used in the templates. This parameter allows you to get only the templates containing specific apps."},"ConnectionId":{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128},"HookId":{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654},"ImtZoneId":{"name":"imtZoneId","in":"query","schema":{"type":"integer"},"description":"The unique ID of the Make zone. This parameter is required to retrieve notifications from the Make version. For other Make platforms, it can be ignored. The IDs of the zones can be obtained from the `/enums/imt-zones` endpoint.","example":2},"ColsDescription":{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"},"To":{"name":"to","in":"query","schema":{"type":"integer"},"example":1663495749015,"description":"Limits data in the response to entries older than the specified timestamp. Use the [UNIX timestamp](https://en.wikipedia.org/wiki/Unix_time) format in milliseconds."},"From":{"name":"from","in":"query","schema":{"type":"integer"},"example":1663495749015,"description":"Limits data in the response to entries newer than the specified timestamp. Use the [UNIX timestamp](https://en.wikipedia.org/wiki/Unix_time) format in milliseconds."},"LogId":{"name":"logId","in":"path","schema":{"type":"string"},"required":true,"description":"The ID of the webhook execution log. Use the `GET /hooks/{hookId}/logs` API call to get the ID values of your webhook execution logs.","example":"95b1c20c790ff5f9d2f1e805943ce95d"},"Confirmed":{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true},"CustomPropertyStructureId":{"name":"customPropertyStructureId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the custom property structure.\nUse the API call `GET /custom-property-structures?organizationId={organizationId}` to get the ID of a custom property structure.","example":2},"CustomPropertyStructureItemId":{"name":"customPropertyStructureItemId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the custom property structure item. Get the item ID with the API call to [list custom property structure items](/api-reference/custom-properties/structure-items/get--custom-properties--custompropertystructureid--custom-property-structure-items.md).","example":2},"KeyId":{"name":"keyId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the key.","example":16},"DataStructureIdRequired":{"name":"dataStructureId","in":"path","schema":{"type":"integer"},"required":true,"description":"The data structure ID. Get the `dataStructureId` with the [list data structures](/api-reference/data-structures/get--data-structures.md) endpoint.","example":1459},"CredentialRequestId":{"name":"requestId","in":"path","required":true,"description":"ID of the Credential Request.","schema":{"type":"string","format":"uuid"}},"CredentialId":{"name":"credentialId","in":"path","required":true,"description":"ID of the Credential.","schema":{"type":"string","format":"uuid"}},"CredentialRequestTeamId":{"name":"teamId","in":"query","required":true,"description":"Team ID to filter credential requests.","schema":{"type":"integer"}},"CredentialRequestCols":{"name":"cols","in":"query","required":false,"description":"Not all properties of the Entity may be returned by default, for example because of their size. Using the Column Filter parameter, you can ask the Server to provide additional properties when needed.","style":"form","explode":true,"schema":{"type":"array","items":{"type":"string","enum":["id","organizationId","teamId","name","description","externalProviderId","createdAt","updatedAt","expiresAt","status","shouldSendEmail","emailSentAt","appNames","makeProvider","userId","makeProviderId"]}}},"CredentialCols":{"name":"cols","in":"query","required":false,"description":"Not all properties of the Entity may be returned by default, for example because of their size. Using the Column Filter parameter, you can ask the Server to provide additional properties when needed.","style":"form","explode":true,"schema":{"type":"array","items":{"type":"string","enum":["id","requestId","component","type","name","label","description","scope","remoteId","remoteScope","tokenId","createdAt","updatedAt","state","declineReason","appName","appModules","appVersion"]}}}}},"security":[{"token":["organizations:read"]}],"tags":[{"name":"Telemetry Destinations","description":"Manage the collector endpoints that receive an organization's OpenTelemetry data. Access requires an organization Owner or Admin and the open-telemetry feature flag."},{"name":"Auth"},{"name":"Admin","description":"The following sections describe endpoints available to the admins of the Make White Label product. If you are using the Make Cloud service you cannot use these endpoints."},{"name":"Admin / Users","x-parent":"Admin","x-page-title":"Users","description":"The following endpoints retrieve information about the users of your Make White Label instance. You can also manage users, for example adding them to organizations and teams."},{"name":"Admin / Teams","x-parent":"Admin","x-page-title":"Teams","description":"The following endpoint allows you to create new teams within organizations in the Make White Label product. You can set the team admin directly in the API call request body."},{"name":"Admin / Organizations","x-parent":"Admin","x-page-title":"Organizations","description":"The following endpoints allow you to inspect and manage organizations in the Make White Label product. You can also adjust operations and data transfer allowance and manage individual organizations access to Make White Label features."},{"name":"Admin / Platform settings","x-parent":"Admin","x-page-title":"Platform settings","description":"The following endpoints allow you to inspect the settings of your Make platform instance."},{"name":"Affiliate"},{"name":"On-prem agents"},{"name":"AI Agents","description":"The following endpoints allow you to get, create, update, delete, and run AI Agents. These endpoints are available in **open beta** to all users. As beta endpoints, both functionality and availability may change."},{"name":"AI Agents / Context","x-parent":"AI Agents","x-page-title":"Context","description":"The following endpoints allow you to get, create, and delete Context for AI Agents. These endpoints are available in **open beta** to all users. As beta endpoints, both functionality and availability may change."},{"name":"AI Agents / LLM Providers","x-parent":"AI Agents","x-page-title":"LLM Providers","description":"The following endpoints allow you to inspect supported AI Providers connections and retrieve the list of supported models. These endpoints are available in **open beta** to all users. As beta endpoints, both functionality and availability may change.\n\n> **Deprecation notice:** Support for **Amazon Bedrock** and **Cohere** as bring-your-own-key providers will be deprecated after **July 23, 2026**."},{"name":"Analytics","description":"The following endpoints allow you to get analytics data for your organization. Make uses the analytics data to create [analytics dashboards](https://www.make.com/en/help/general/analytics-dashboard)."},{"name":"Audit logs","description":"The following endpoints allow you to get the organization and team audit logs and their details.\n\nYou can read more about audit logs in our [Help Center](https://www.make.com/en/help/access-management/audit-logs).\n"},{"name":"Cashier"},{"name":"Connections","description":"In Make, you need to create a connection for most apps. Make then uses this connection to communicate with the third-party service and to authenticate your requests to the third-party service. The following endpoints allow you to create and manage connections."},{"name":"Connections / Access list","x-parent":"Connections","x-page-title":"Access list","description":"The following endpoints let you view and manage the access list (entity ACL) of a connection — the users granted a role on it."},{"name":"Credential Requests","description":"The following endpoints allow you to manage credential requests for connections and keys. You can create requests, list them, view details, and manage individual credentials within requests."},{"name":"Custom properties","description":"The following endpoints allow you to create and list custom property structures.\n\nTo use custom properties, you have to:\n\n1. [Create a custom properties structure](./post--custom-property-structures.md).\n2. [Create custom properties structure items](./structure-items/post--custom-property-structures--custompropertystructureid--custom-property-structure-items.md).\n3. [Fill the items with data](../scenarios/custom-properties-data/post--scenarios--scenarioid--custom-properties.md).\n\nRead more about custom properties in the [custom properties feature documentation](https://help.make.com/custom-scenario-properties).\n"},{"name":"Custom properties / Structure items","x-parent":"Custom properties","x-page-title":"Structure items","description":"The following endpoints allow you to manage items in a custom property structure.\n\nTo use custom properties, you have to:\n\n1. [Create a custom properties structure](../post--custom-property-structures.md).\n2. [Create custom properties structure items](./post--custom-property-structures--custompropertystructureid--custom-property-structure-items.md).\n3. [Fill the items with data](../../scenarios/custom-properties-data/post--scenarios--scenarioid--custom-properties.md).\n\nRead more about custom properties in the [custom properties feature documentation](https://help.make.com/custom-scenario-properties).\"\n"},{"name":"Data stores","description":"Data stores are used to store data from scenarios or for transferring data in between individual scenarios or scenario runs. The following endpoints allow you to create and manage data stores."},{"name":"Data stores / Data","x-parent":"Data stores","x-page-title":"Data","description":"The following endpoints allow you to create and manage records in data stores."},{"name":"Data structures","description":"Data structures define the format of the data being transferred to the Make platform. For example, they are widely used by the Data stores component. The following endpoints allow you to create and manage data structures."},{"name":"Devices"},{"name":"Devices / Incomings","x-parent":"Devices","x-page-title":"Incomings"},{"name":"Devices / Outgoing","x-parent":"Devices","x-page-title":"Outgoings"},{"name":"Incomplete executions","description":"If a scenario terminates unexpectedly because of an error, then the scenario run is discarded. You can set the scenario to store the failed scenario run as an incomplete execution. With that, if an error occurs in your scenario, you can resolve it manually and avoid losing data.\n\nRead more about the [incomplete executions](https://www.make.com/en/help/scenarios/incomplete-executions)."},{"name":"Internal","description":"The following endpoints are internal endpoints used by the Make platform. They are not available to the public."},{"name":"Enums","description":"The parameters with a predefined set of values are called \\\"enums.\\\" The enums endpoints list the mappings of a possible parameter values and the IDs of those values. For example, the endpoint `/enums/timezones` lists the timezone `name` and `code`, such as `Europe/Berlin`, and the `timezoneId`."},{"name":"Event subscriptions","description":"The following endpoints let you manage event subscriptions, which send Make events, such as a scenario being created, to your HTTPS endpoint, and inspect and resend their deliveries."},{"name":"Custom functions","description":"Custom functions are functions you or your team members create that you can use in a scenario. The following API endpoints allow you to:\n\n- list\n - evaluate\n - create\n - update\n - delete\n - check version history\n\nof your custom functions.\n\nCheck the custom functions feature [documentation in the Make Help center](https://www.make.com/en/help/functions/custom-functions)."},{"name":"General","description":"This section contains endpoints that provide general functionality for the Make API."},{"name":"Hooks","description":"Hooks refer to the webhooks and mailhooks available in the various apps in the Make interface. They notify you whenever a certain change occurs in the connected app or service, such as sending an HTTP request or an email. The following endpoints allow you to create and manage hooks."},{"name":"Hooks / Incomings","x-parent":"Hooks","x-page-title":"Incomings","description":"When data arrive to a scheduled webhook, Make places the data in the webhook processing queue. Webhooks process data in the same order as they arrive. The following endpoints allow you to inspect and update the webhook processing queue."},{"name":"Hooks / Logs","x-parent":"Hooks","x-page-title":"Logs","description":"Make stores a log of every webhook execution. Make stores webhook logs for 3 days. The webhook logs for organizations with the Enterprise plan are stored for 30 days.  [Read more about webhook logs](https://www.make.com/en/help/tools/webhooks#webhook-logs).\n\nThe following endpoints allow you to retrieve webhook logs."},{"name":"Keys","description":"The following endpoints allow you to manage and retrieve metadata for authentication keys in your custom keychain. You can use these keys to manage your authentication in the HTTP or encryptor apps similarly to other connections."},{"name":"Keys / Access list","x-parent":"Keys","x-page-title":"Access list","description":"The following endpoints let you view and manage the access list (entity ACL) of a key — the users granted a role on it."},{"name":"Outbound Webhooks","description":"Outbound webhook subscriptions deliver Make platform events to customer-controlled HTTPS endpoints. These endpoints are proxied to the Outbound Webhooks service. Full schema documentation is available at https://github.com/integromat/outbound-webhooks/blob/master/openapi/openapi.json."},{"name":"Notifications","description":"The **Notifications** feature keeps you informed about problems in your scenarios and keep you up to date when it comes to the new features and improvements in Make. The following endpoints allow you to manage the notifications."},{"name":"Oauth","description":"experimental"},{"name":"Organizations","description":"Organizations are main containers that contain all teams, scenarios, and users. The API endpoints discussed further allow you to manage organizations. [Read more about organizations](https://www.make.com/en/help/access-management/organizations)."},{"name":"Organizations / User organization roles","x-parent":"Organizations","x-page-title":"User organization roles","description":"User organization roles define user permissions in the organization. The endpoints discussed further retrieve information about user roles in the organization. Use the `/users/{userId}/user-organization-roles/{organizationIdId}` to manage user organization roles. Check out the [overview of user organization roles and the associated user permissions](https://www.make.com/en/help/access-management/organizations#organization-roles)."},{"name":"Organizations / Domain claimed","x-parent":"Organizations","x-page-title":"Domain claiming","description":"The following endpoints allow you to manage the domain claiming."},{"name":"MMS","description":"The following endpoints allow you to manage child organizations."},{"name":"Private spaces","description":"The following endpoints allow you to manage private spaces in your organization."},{"name":"Remote procedures"},{"name":"Scenarios","description":"**Scenarios** allow you to create and run automation tasks. A scenario consists of a series of modules that indicate how data should be transferred and transformed between apps or services. The following endpoints allow you to create, manage and execute scenarios and also inspect and manage [scenario inputs](https://www.make.com/en/help/scenarios/scenario-inputs)."},{"name":"Scenarios / Logs","x-parent":"Scenarios","x-page-title":"Logs","description":"The following endpoints allow you to manage scenarios logs."},{"name":"Scenarios / Blueprints","x-parent":"Scenarios","x-page-title":"Blueprints","description":"The following endpoints allow you to manage scenarios blueprints."},{"name":"Scenarios / Consumptions","x-parent":"Scenarios","x-page-title":"Consumptions","description":"Scenario consumption refers to information about the number of centicredits, operations, and data transfer used by a scenario. The following endpoints retrieve information about your scenario consumption during your current restart period. You can view the end of your current restart period in your dashboard under the Usage reset field."},{"name":"Scenarios / Tools","x-parent":"Scenarios","x-page-title":"Tools","description":"The following endpoints allow you to manage tools."},{"name":"Scenarios / Custom properties data","x-parent":"Scenarios","x-page-title":"Custom properties data","description":"The following endpoints allow you to manage custom scenario properties data.\n\nTo use custom properties, you have to:\n\n1. [Create a custom properties structure](../../custom-properties/post--custom-property-structures.md).\n2. [Create custom properties structure items](../../custom-properties/structure-items/post--custom-property-structures--custompropertystructureid--custom-property-structure-items.md).\n3. [Fill the items with data](./post--scenarios--scenarioid--custom-properties.md).\n\nRead more about custom properties in the [custom properties feature documentation](https://help.make.com/custom-scenario-properties).\n"},{"name":"Scenarios folders","description":"Scenarios can be grouped into folders for better organization. The following endpoints allow you to create and manage scenarios folders."},{"name":"Scenario labels","description":"Colour-coded team labels can be assigned to scenarios for organization and filtering."},{"name":"SDK Apps"},{"name":"SDK Apps / Invites","x-parent":"SDK Apps","x-page-title":"Invites"},{"name":"SDK Apps / Modules","x-parent":"SDK Apps","x-page-title":"Modules"},{"name":"SDK Apps / RPCs","x-parent":"SDK Apps","x-page-title":"RPCs"},{"name":"SDK Apps / Functions","x-parent":"SDK Apps","x-page-title":"Functions"},{"name":"SDK Apps / Connections","x-parent":"SDK Apps","x-page-title":"Connections"},{"name":"SDK Apps / Webhooks","x-parent":"SDK Apps","x-page-title":"Webhooks"},{"name":"SSO certificates","description":"Managing of SSO certificates."},{"name":"Teams","description":"Teams are containers that contain scenarios and data accessible only by the members of the team. The API endpoints discussed further allow you to manage teams. [Read more about teams](https://www.make.com/en/help/access-management/teams)."},{"name":"Teams / Locked entities","x-parent":"Teams","x-page-title":"Locked entities","description":"The following endpoint lists the locked connections and keys of a team together with the calling user's permissions on them and their access lists."},{"name":"Teams / User team roles","x-parent":"Teams","x-page-title":"User team roles","description":"User team roles define user permissions in the team. The endpoints discussed further retrieve information about user roles in the team. Use the `/users/{userId}/user-team-roles/{userId}` endpoint to manage user team roles. Check out the [overview of user team roles and the associated permissions](https://www.make.com/en/help/access-management/teams#managing-team-members)."},{"name":"Templates","description":"The **Templates** feature allows you to create and use templates as a starting point for your Make scenarios. By default, Make offers hundreds of templates containing the scenarios of most-used apps. The following endpoints allow you to create and manage templates."},{"name":"Templates / Public","x-parent":"Templates","x-page-title":"Public","description":"The following endpoints focus on the public (approved) templates that are available to every user regardless of the organization and team."},{"name":"Users","description":"The following main user endpoints allow you to get a list of existing users and manage their basic details such as password change."},{"name":"Users / Me","x-parent":"Users","x-page-title":"Me","description":"The following endpoints retrieve data about the currently authenticated user."},{"name":"Users / API Tokens","x-parent":"Users","x-page-title":"API Tokens","description":"The following endpoints manage and retrieve data about the API tokens assigned to the currently authenticated user."},{"name":"Users / User team roles","x-parent":"Users","x-page-title":"User team roles","description":"The following endpoints update and retrieve data about user team roles of a user in a team. Check out the [overview of user team roles and the associated permissions](https://www.make.com/en/help/access-management/teams#managing-team-members)."},{"name":"Users / User team notifications","x-parent":"Users","x-page-title":"User team notifications","description":"The following endpoints update and retrieve data about user team notifications settings of a user in a team. [Read more about user team notifications](https://www.make.com/en/help/access-management/teams#managing-team-notification-options)."},{"name":"Users / User organization roles","x-parent":"Users","x-page-title":"User organization roles","description":"The following endpoints update and retrieve data about user organization roles of a user in an organization. Check out the [overview of user organization roles and the associated permissions](https://www.make.com/en/help/access-management/organizations#organization-roles)."},{"name":"Users / Roles","x-parent":"Users","x-page-title":"Roles","description":"The following endpoints retrieve the mapping of a `userRoleId` parameter and user role name, and let you create, update, and delete custom organization and team roles."},{"name":"Users / Unread notifications","x-parent":"Users","x-page-title":"Unread notifications","description":"The following endpoint retrieves the number of unread notifications of the currently authenticated user."},{"name":"Users / User email preferences - Mailhub","x-parent":"Users","x-page-title":"User email preferences - Mailhub"},{"name":"Users / Membership Promises","x-parent":"Users","x-page-title":"Membership Promises"}],"paths":{"/login":{"post":{"tags":["Auth"],"summary":"Log in","x-internal":true,"description":"Logs a user in by passing the user's email and password in the request body. It does not work with an API token.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","format":"password"}},"required":["email","password"]},"example":{"email":"test@make.cloud","password":"test"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"integer"}}},"example":{"userId":1}}}}}}},"/logout":{"post":{"tags":["Auth"],"summary":"Log out","x-internal":true,"description":"Logs the currently logged-in user out. It does not work with an API token.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/sso/authorize":{"get":{"tags":["Auth"],"summary":"Authorize URL","x-internal":true,"description":"Starts the zone SSO handshake. Anonymous visitors on an uninstalled slave receive a structured 409 with reason install_required; the client maps that reason to the install overlay.","parameters":[{"name":"redirect","in":"query","required":true,"schema":{"type":"string"},"example":"/admin"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"authorizeUrl":{"type":"string","format":"uri"}}},"example":{"authorizeUrl":"https://sso.example.com/authorize?response_type=code&client_id=mock.make.cloud&redirect_uri=https%3A%2F%2Fmock.make.cloud%2Fsso%2Foauth&state=c72e0f91265beae1cf7f&scope=mock.connect"}}}},"409":{"description":"Slave zone still requires the install guide","content":{"application/json":{"schema":{"type":"object","required":["reason"],"properties":{"reason":{"type":"string","enum":["install_required"]}}},"example":{"reason":"install_required"}}}}}}},"/sso/login":{"post":{"tags":["Auth"],"summary":"OAuth login","x-internal":true,"description":"experimental","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"state":{"type":"string"}},"required":["code","state"]},"example":{"code":"966d7b84db750a3a297341fff8e33f07cb47b420","state":"c72e0f91265beae1cf7f"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"redirect":{"type":"string"},"redirectAction":{"type":"object","properties":{"action":{"type":"string"},"data":{"type":"object"}},"required":["action"]}}},"example":{"redirect":"/","redirectAction":{"action":"CREATE_SCENARIO","data":{"modules":["weather:now","google:sheet"]}}}}}}}}},"/admin/functions/v2/trash":{"get":{"x-private":true,"tags":["Admin / Functions V2"],"summary":"List trashed Functions of a team","description":"Lists the team's Functions V2 that were deleted less than 30 days ago and can still be restored, newest deletion first.\nRequires the `scenario view` admin permission.\n\nDeleting a Function moves it to trash: it is switched off, its in-flight Runs are cancelled, and the Function, its versions\nand its Runs disappear from every non-admin route. After 30 days a background job deletes them permanently, and they no\nlonger appear here.\n","security":[{"token":["admin:read","functions:read"]}],"parameters":[{"name":"teamId","in":"query","required":true,"description":"Team that owns the Function collection.","schema":{"type":"integer","format":"int32","minimum":1},"example":42}],"responses":{"200":{"description":"Trashed Functions of the team that can still be restored.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["functions"],"properties":{"functions":{"type":"array","items":{"type":"object","additionalProperties":false,"description":"A Function in trash. Trashed Functions are always off.","required":["id","teamId","name","active","latestVersion","createdAt","updatedAt","ownerUserId","deletedAt"],"properties":{"id":{"type":"integer","format":"int32","minimum":1},"teamId":{"type":"integer","format":"int32","minimum":1},"name":{"type":"string"},"description":{"type":"string","nullable":true},"active":{"type":"boolean","enum":[false]},"latestVersion":{"type":"object","additionalProperties":false,"required":["version","inputSchema","outputSchema","connections","endpoints","createdAt"],"properties":{"version":{"type":"integer","format":"int32","minimum":1},"inputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"outputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"connections":{"type":"object","additionalProperties":{"type":"integer","format":"int32","minimum":1}},"endpoints":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"description":"An Endpoint the Function source may call, each one declared once. Code calls it in the\nEndpoints SDK's shape with a declared connection label, for example\n`make.endpoints.salesforce.v4.getCustomer({ input: { id }, connection: 'crm' })`.\n","required":["alias","appName","appVersion","endpointName"],"properties":{"alias":{"type":"string","minLength":1,"maxLength":128,"description":"Display name of the declaration. Code calls the Endpoint by its app, version and name, never by alias."},"connectionKey":{"type":"string","minLength":1,"maxLength":128,"description":"Label of the declared connection the editor binds this Endpoint to; its calls pass the same label as `connection`."},"appName":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":128}}}},"createdAt":{"type":"string","format":"date-time"}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"ownerUserId":{"type":"integer","format":"int32","minimum":1,"description":"ID of the user who created the Function."},"deletedAt":{"type":"string","format":"date-time","description":"When the Function was moved to trash. It is purged 30 days later."}}}}}},"examples":{"trash":{"value":{"functions":[{"id":741,"teamId":42,"name":"normalizeInvoices","description":"Normalizes invoice records.","active":false,"latestVersion":{"version":3,"inputSchema":{},"outputSchema":{},"connections":{"crm":22019},"endpoints":[{"alias":"Get customer","appName":"salesforce","appVersion":4,"endpointName":"getCustomer","connectionKey":"crm"}],"createdAt":"2026-09-20T10:30:00.000Z"},"createdAt":"2026-09-18T09:00:00.000Z","updatedAt":"2026-09-22T08:00:00.000Z","ownerUserId":1001,"deletedAt":"2026-09-22T08:00:00.000Z"}]}}}}}},"400":{"description":"Request validation failed.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM005","message":"teamId must be a positive integer."}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}}}}},"/admin/functions/v2/{functionId}/restore":{"parameters":[{"name":"functionId","in":"path","required":true,"description":"Function identifier. Functions Control resolves its owning Team and performs authoritative\nTeam and resource authorization for this Function and every nested resource.\n","schema":{"type":"integer","format":"int32","minimum":1},"example":741}],"post":{"x-private":true,"tags":["Admin / Functions V2"],"summary":"Restore a trashed Function","description":"Restores a Function V2 deleted less than 30 days ago, together with its versions and Runs.\nRequires the `scenario edit` admin permission. The request has no body.\n\nThe restored Function is switched off; its owner must switch it on before published versions accept Runs again.\nRuns cancelled by the deletion stay cancelled. Restoring a Function that is not in trash returns it unchanged.\nReturns `404` when the Function does not exist or was deleted 30 or more days ago.\n","security":[{"token":["admin:write","functions:write"]}],"responses":{"200":{"description":"The restored Function, switched off.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["function"],"properties":{"function":{"type":"object","additionalProperties":false,"required":["id","teamId","name","active","latestVersion","createdAt","updatedAt"],"properties":{"id":{"type":"integer","format":"int32","minimum":1},"teamId":{"type":"integer","format":"int32","minimum":1},"name":{"type":"string"},"description":{"type":"string","nullable":true},"active":{"type":"boolean","description":"Whether published versions accept Runs. New and restored Functions are off; inline Runs work either way."},"latestVersion":{"type":"object","additionalProperties":false,"required":["version","inputSchema","outputSchema","connections","endpoints","createdAt"],"properties":{"version":{"type":"integer","format":"int32","minimum":1},"inputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"outputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"connections":{"type":"object","additionalProperties":{"type":"integer","format":"int32","minimum":1}},"endpoints":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"description":"An Endpoint the Function source may call, each one declared once. Code calls it in the\nEndpoints SDK's shape with a declared connection label, for example\n`make.endpoints.salesforce.v4.getCustomer({ input: { id }, connection: 'crm' })`.\n","required":["alias","appName","appVersion","endpointName"],"properties":{"alias":{"type":"string","minLength":1,"maxLength":128,"description":"Display name of the declaration. Code calls the Endpoint by its app, version and name, never by alias."},"connectionKey":{"type":"string","minLength":1,"maxLength":128,"description":"Label of the declared connection the editor binds this Endpoint to; its calls pass the same label as `connection`."},"appName":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":128}}}},"createdAt":{"type":"string","format":"date-time"}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"restored":{"value":{"function":{"id":741,"teamId":42,"name":"normalizeInvoices","description":"Normalizes invoice records.","active":false,"latestVersion":{"version":3,"inputSchema":{},"outputSchema":{},"connections":{"crm":22019},"endpoints":[{"alias":"Get customer","appName":"salesforce","appVersion":4,"endpointName":"getCustomer","connectionKey":"crm"}],"createdAt":"2026-09-20T10:30:00.000Z"},"createdAt":"2026-09-18T09:00:00.000Z","updatedAt":"2026-09-23T09:10:00.000Z"}}}}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC404","message":"Function resource not found."}}}}}}},"/admin/scenarios/reactivate":{"post":{"x-private":true,"tags":["Admin / Scenarios"],"summary":"Reactivate scenarios","description":"Reactivates up to 10,000 scenario IDs in the current zone, or 20 with `reanalyze: true` (before deduplication). Duplicate IDs are processed once.\nRequires the `scenarios get` admin permission. Deleted, locked and executing scenarios are skipped.\n\nWith `reanalyze: true`, also requires the `scenario edit` admin permission. Rebuilds derived\nbindings from the stored published blueprint and draft before activation. Existing resources can\nbe relinked; deleted resources, invalid connection credentials and gone webhooks cannot be repaired.\nUse reanalysis only to repair missing bindings, for example after restoring an accidentally deleted scenario.\nScenarios are processed sequentially within each request, each in its own atomic transaction.\nEach reanalysis database statement is limited to 5 seconds, with at most 1 second waiting for a lock.\nTimeouts roll back that scenario and return a failed result; subsequent IDs are still processed.\nResults retain input order after deduplication. A failure rolls back that scenario and does not stop other IDs.\nDeleted teams and organizations are skipped. A scenario without a published blueprint cannot be activated.\nStored blueprint JSON and versions are preserved; the draft is never published.\n\nAlready active scenarios are reanalyzed but their scheduling is reset only with `forceIfActive: true`.\n`reanalysis` describes the analysis phase separately from the existing activation `status`.\nMerely reanalyzing an active scenario does not increment `summary.reactivated`.\n\nWith both `dryRun` and `reanalyze`, performs the real database operation and rolls its transaction back,\nincluding derived bindings, runtime state, scheduling and scenario events.\nIt has the same database cost and locking impact as execution and the same 20-ID limit. Request auditing still applies.\nDry-run results describe the state at the time of the check and do not guarantee a later execution succeeds.\nWithout `reanalyze`, the existing reactivation and dry-run behavior is unchanged.\n","security":[{"token":["admin:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["scenarioIds"],"oneOf":[{"properties":{"reanalyze":{"enum":[false]}}},{"required":["reanalyze"],"properties":{"reanalyze":{"enum":[true]},"scenarioIds":{"maxItems":20}}}],"properties":{"scenarioIds":{"type":"array","minItems":1,"maxItems":10000,"description":"Scenario IDs in the current zone. Duplicates are removed before processing. With reanalyze enabled, at most 20 IDs may be submitted (before deduplication), including dry runs.","items":{"type":"integer","format":"int32","minimum":1,"maximum":2147483647}},"dryRun":{"type":"boolean","default":false,"description":"Return predicted results. With reanalyze, perform the real operation in a transaction and roll it back; this has the same database cost and the same 20-ID limit as execution."},"forceIfActive":{"type":"boolean","default":false,"description":"Reset state and scheduling even for already active scenarios."},"reanalyze":{"type":"boolean","default":false,"description":"Rebuild bindings to existing resources before reactivation; also analyze already active scenarios."}}},"examples":{"reanalyze":{"value":{"scenarioIds":[123,456],"reanalyze":true}},"dryRun":{"value":{"scenarioIds":[123],"reanalyze":true,"dryRun":true}}}}}},"responses":{"200":{"description":"Individual results and counts grouped by activation status. Per-scenario failures also use HTTP 200.","content":{"application/json":{"schema":{"type":"object","required":["results","summary"],"properties":{"results":{"type":"array","items":{"type":"object","required":["scenarioId","status","message","prevIslinked","prevIsinvalid","prevInvalidationReason","prevErrorOccurCount"],"properties":{"scenarioId":{"type":"integer"},"status":{"type":"string","enum":["reactivated","would_reactivate","already_active","deleted","executing","locked","not_found","failed"]},"message":{"type":"string","nullable":true,"description":"Reason for the activation result or a safe description of a reanalysis error."},"reanalysis":{"type":"string","enum":["succeeded","would_succeed","failed","skipped"],"description":"Present only when reanalyze is true. Failed analysis leaves the scenario unchanged."},"prevIslinked":{"type":"boolean","nullable":true},"prevIsinvalid":{"type":"boolean","nullable":true},"prevInvalidationReason":{"type":"string","nullable":true},"prevErrorOccurCount":{"type":"integer","nullable":true}}}},"summary":{"type":"object","required":["total"],"description":"Total unique IDs plus a count for each activation status present in results.","properties":{"total":{"type":"integer"}},"additionalProperties":{"type":"integer"}}}},"examples":{"reanalyze":{"value":{"results":[{"scenarioId":123,"status":"reactivated","message":"Scenario reactivated successfully","reanalysis":"succeeded","prevIslinked":false,"prevIsinvalid":true,"prevInvalidationReason":"Restored scenario","prevErrorOccurCount":3},{"scenarioId":456,"status":"already_active","message":"Scenario is already active","reanalysis":"succeeded","prevIslinked":true,"prevIsinvalid":false,"prevInvalidationReason":"","prevErrorOccurCount":0}],"summary":{"total":2,"reactivated":1,"already_active":1}}},"dryRun":{"value":{"results":[{"scenarioId":123,"status":"would_reactivate","message":"Would reactivate (dry run)","reanalysis":"would_succeed","prevIslinked":false,"prevIsinvalid":true,"prevInvalidationReason":"Restored scenario","prevErrorOccurCount":3}],"summary":{"total":1,"would_reactivate":1}}}}}}},"400":{"description":"Invalid scenario IDs, more than 20 submitted IDs with reanalyze enabled (including dry runs), more than 10,000 IDs otherwise, or non-boolean options."},"401":{"description":"Authentication is required."},"403":{"description":"The caller is not an administrator or lacks a required admin permission."}}}},"/admin/teams":{"get":{"x-private":true,"tags":["Admin / Teams"],"summary":"List teams","description":"Gets the list of teams in the organization with the specified `organizationId`.","security":[{"token":["admin:read","teams:read"]}],"parameters":[{"name":"organizationId","in":"query","schema":{"type":"integer"},"required":true,"example":22,"description":"The ID of the organization."},{"name":"externalId","in":"query","schema":{"type":"string"},"description":"Custom team ID from an external system to the Make White Label platform."},{"name":"pg[sortBy]","in":"query","schema":{"type":"string","enum":["name"]},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"organizationId":{"type":"integer"},"scenarioDrafts":{"type":"boolean","deprecated":true,"description":"This property is deprecated. It is only supported on private instances and ignored on Make's public cloud.\n"},"deleted":{"type":"boolean"},"externalId":{"type":"string"},"type":{"type":"string","enum":["standard","personal"],"description":"Distinguishes a standard team from a private space (`personal`). Only returned when requested via\n`cols[]=type`. Private spaces are included in the list only when `includePrivateSpaces=true`.\n"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"example":{"teams":[{"id":38,"name":"Management","organizationId":22,"scenarioDrafts":false,"deleted":false,"externalId":null},{"id":36,"name":"Removed team","organizationId":20,"scenarioDrafts":false,"deleted":true,"externalId":null}],"pg":{"sortBy":"name","limit":10000,"sortDir":"asc","offset":0}}}}}}},"post":{"x-private":true,"tags":["Admin / Teams"],"summary":"Create a team","description":"Creates a new team in the specified organization.\n\nYou can set the team admin with the parameter `userTeamAdmin` in the request body. If you don't use the `userTeamAdmin` parameter and you are part of the organization, then Make sets you as the team admin.","security":[{"token":["admin:write","teams:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the team."},"organizationId":{"type":"integer","description":"The ID of the organization."},"userTeamAdmin":{"type":"integer","description":"Set the user with the specified `userId` as the admin of the team."}},"required":["name","organizationId"]},"example":{"name":"Marketing team","organizationId":20,"userTeamAdmin":15}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"team":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"organizationId":{"type":"integer"},"activeScenarios":{"type":"integer","description":"Number of active scenarios in the team. Only returned by `GET /teams/{teamId}` when requested via `cols[]`."},"activeApps":{"type":"integer","description":"Number of distinct apps that need a connection, used by the team's active scenarios. Only returned by `GET /teams/{teamId}` when requested via `cols[]`."},"operationsLimit":{"type":"integer"},"transferLimit":{"type":"bigint"},"type":{"type":"string","enum":["standard","personal"],"description":"Distinguishes a standard team from a private space (`personal`). Only returned when requested via\n`cols[]=type`. Private spaces are included in the list only when `includePrivateSpaces=true`.\n"}}},"userTeamRole":{"type":"object","properties":{"usersRoleId":{"type":"integer","nullable":true,"description":"The user's role in the team, or `null` when the user has no role (e.g. after removal)."},"userId":{"type":"integer"},"teamId":{"type":"integer"},"changeable":{"type":"boolean"},"ssoPending":{"type":"boolean"}}}}},"example":{"team":{"id":26,"name":"Marketing team","organizationId":20},"userTeamRole":{"usersRoleId":1,"userId":15,"teamId":26,"changeable":false,"ssoPending":false}}}}}}}},"/admin/teams/{teamId}":{"patch":{"x-private":true,"tags":["Admin / Teams"],"summary":"Update team","description":"Updates team information. Make updates only the values in the request body.","security":[{"token":["admin:write","teams:write"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":56}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the team."}}},"example":{"name":"Sales people team"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"team":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"organizationId":{"type":"integer"},"scenarioDrafts":{"type":"boolean","deprecated":true,"description":"This property is deprecated. It is only supported on private instances and ignored on Make's public cloud.\n"},"deleted":{"type":"boolean"},"externalId":{"type":"string"},"type":{"type":"string","enum":["standard","personal"],"description":"Distinguishes a standard team from a private space (`personal`). Only returned when requested via\n`cols[]=type`. Private spaces are included in the list only when `includePrivateSpaces=true`.\n"}}}}},"example":{"id":56,"name":"Sales people team","organizationId":22,"scenarioDrafts":false,"deleted":false,"externalId":null}}}}}},"delete":{"x-private":true,"tags":["Admin / Teams"],"summary":"Delete a team","description":"Deletes the team with the specified `teamId`. Make removes all users from the deleted team and deletes all data associated with the team, such as data stores and scenarios.\n\nThe team won't be visible for the users. However, if you run the API call `GET /admin/teams` the response will contain also the deleted team with the `deleted: true` pair. Similarly, the team will remain visible in the Administration UI.","security":[{"token":["admin:write","teams:write"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"team":{"type":"integer"}}},"example":{"team":22}}}}}}},"/admin/organizations":{"get":{"x-private":true,"tags":["Admin / Organizations"],"summary":"List organizations","description":"Gets the list of all organizations in the Make White Label product instance. The response contains all available information about all organizations in the Make White Label product instance.\n\nUse the `id`, `name` or `externalId` query parameters to limit the results to a specific organization or the `cols[]` parameter to get specific columns.","security":[{"token":["admin:read","organizations:read"]}],"parameters":[{"name":"id","in":"query","description":"The ID of the organization.","schema":{"type":"integer"},"examples":{"filter-data":{"value":5}}},{"name":"name","in":"query","description":"The name of the organization.","schema":{"type":"string"}},{"name":"externalId","in":"query","description":"Custom organization ID from a different system than Make White Label.","schema":{"type":"string"}},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"filter-data":{"value":["id","name","license"]}}},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organizations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"timezoneId":{"type":"number"},"countryId":{"type":"number"},"license":{"type":"object","additionalProperties":{}},"serviceName":{"type":"string"},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"externalId":{"type":"string"}}}},"isPaused":{"type":"boolean"},"zone":{"type":"string"},"externalId":{"type":"string"},"scenarios":{"type":"integer"},"activeScenarios":{"type":"integer"},"deleted":{"type":"boolean"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"examples":{"default-cols":{"summary":"All data","description":"Get all available data about all organizations in the Make White Label instance.","value":{"organizations":[{"id":7,"name":"API example","timezoneId":318,"countryId":202,"license":{"dslimit":40,"executionTime":45,"fslimit":1048576000,"iolimit":10000,"dsslimit":524288000,"interval":1,"transfer":1099511627776,"operations":800000000,"gracePeriod":0,"customVariables":true,"productManagement":"salesforce","scenarioInputs":true,"restartPeriod":"1 month"},"serviceName":"default","teams":[{"id":6,"name":"My Team","externalId":null}],"isPaused":false,"zone":"white.label.example.com","externalId":null,"scenarios":2,"activeScenarios":0,"deleted":false,"tfaEnforced":false},{"id":5,"name":"new org","timezoneId":113,"countryId":1,"license":{"dslimit":40,"fslimit":2147483648,"iolimit":10000,"apiLimit":2000,"dsslimit":524288000,"fulltext":true,"interval":1,"transfer":1099511627776,"operations":800000000,"scenarioIO":true,"executionTime":45,"restartPeriod":"1 month","customVariables":true,"creatingTemplates":true,"installPublicApps":true,"gracePeriod":0,"productManagement":"salesforce"},"serviceName":"default","teams":[{"id":4,"name":"My Team","externalId":null}],"isPaused":false,"zone":"white.label.example.com","externalId":null,"scenarios":0,"activeScenarios":0,"deleted":true,"tfaEnforced":false}],"pg":{"sortBy":"id","limit":10000,"sortDir":"desc","offset":0}}},"filter-data":{"summary":"Filter results","description":"Get the `id`, `name` and `license` of the specified organization.","value":{"organizations":[{"id":5,"name":"new org","license":{"dslimit":40,"fslimit":2147483648,"iolimit":10000,"apiLimit":2000,"dsslimit":524288000,"fulltext":true,"interval":1,"transfer":1099511627776,"operations":800000000,"scenarioIO":true,"executionTime":45,"restartPeriod":"1 month","customVariables":true,"creatingTemplates":true,"installPublicApps":true,"scenarioInputs":true,"productManagement":"salesforce","gracePeriod":0}}],"pg":{"sortBy":"id","limit":10000,"sortDir":"desc","offset":0}}}}}}}}},"post":{"x-private":true,"tags":["Admin / Organizations"],"summary":"Create an organization","description":"Create a new organization in the Make White Label instance. You can set the organization admin, timezone, country and features with the `countryId`, `timezoneId`, `userOrgAdmin` and `license` parameters in the request body.\n\nIf you don't use the `countryId` and `timezoneId` parameters Make uses your account values to set the organization timezone and country.\n\nIf you don't use the `userOrgAdmin` parameter you are set as the organization admin.\n\nThe `license` object sets the features and limits for the users in the organization. The following table lists all license parameters and their maximum, minimum, or available values for enumerated parameters. If you don't use the `license` parameter Make sets the organization's license to the default values for your Make White Label instance. You can check the default license of your Make White Label instance with the [get default license](https://www.make.com/en/api-documentation/admin-system-settings-default-license-get) endpoint.\n <!-- license input anchor begin -->\n<div itemscope itemtype=\"https://schema.org/FAQPage\"> <div class=\"card table\"> <table class=\"table\"> <thead> <tr> <th><strong class=\"text-nowrap\">Parameter</strong></th> <th><strong>Description and values</strong></th> </tr> </thead> <tbody> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>restartPeriod</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>The period of time after which Make resets an organization's centicredits, operations, and data transfer.</p> <p><strong>Type:</strong> enum&lt;string&gt;</p> <p><strong>Values:</strong></p> <ul> <li>1 month</li> <li>1 year</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>operations</code> <span class=\"required\">REQUIRED</span> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>The number of operations that are available to scenarios in the organization. Operations reset after the restart period.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 0</li> <li><strong>max:</strong> 800000000</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>transfer</code> <span class=\"required\">REQUIRED</span> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>The maximum amount of data transfer in bytes available to scenarios in the organization. Transfer resets after the restart period.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 104857600</li> <li><strong>max:</strong> 1099511627776</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>dslimit</code> <span class=\"required\">REQUIRED</span> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>The maximum number of data stores in the organization.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 1</li> <li><strong>max:</strong> 1000</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>dsslimit</code> <span class=\"required\">REQUIRED</span> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>The maximum storage in bytes available across all data stores in the organization.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 1</li> <li><strong>max:</strong> 2306867200</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>interval</code> <span class=\"required\">REQUIRED</span> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>The minimum interval between two scheduled scenario executions in minutes. The interval setting is ignored when the scenario scheduling is set to \"immediately\".</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 1</li> <li><strong>max:</strong> 15</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>teams</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>The maximum number of teams in the organization. Unlimited if not specified.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 1</li> <li><strong>max:</strong> 1000</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>retention</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>The number of days to store internal logs (<code>activity stream</code>, <code>userdata fulltext</code>, <code>userdata</code>, <code>debugdata</code>) for the organization. <br> The <code>retention</code> parameter limits for example the scenario execution detail storage duration. Scenario executions older than the <code>retention</code> period have only information about the scenario execution start and status.</p> <p><strong>Type:</strong> enum&lt;uinteger&gt;</p> <p><strong>Values:</strong></p> <ul> <li>7</li> <li>30</li> <li>60</li> <li><strong>default:</strong> 60</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>premiumApps</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Users in the organization have access to premium apps that have the same or lower premium tier as the value of the <code>premiumApps</code> parameter. <br> To check the installed apps premium tier: <br> 1. List all installed apps with the API call <code>GET /admin/apps</code> to get the app names in the <code>name</code> field. <br> 2. Run the API call <code>GET /admin/apps/{appName}</code>. Check the field <code>premiumTier</code> for the premium tier of the app.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 1</li> <li><strong>max:</strong> 10</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>priority</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Sets the scenario execution priority of the scenarios in the organization. <br> Make executes scenarios from an execution queue. If there are scenarios scheduled to run at the same time, Make orders them for execution according to their priority.</p> <p><strong>Type:</strong> enum&lt;string&gt;</p> <p><strong>Values:</strong></p> <ul> <li>low</li> <li>medium</li> <li>high</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>allowOverage</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Sets the percentage by which scenarios can exceed the number of available centicredits, operations, and data transfer. <br> For example, if the organization has the <code>operations</code> limit 1000 and the <code>allowOverage</code> parameter set to 120, the scenarios in the organization can use up to 1200 operations before Make stops and inactivates them.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 100</li> <li><strong>max:</strong> 200</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>apiLimit</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Sets a limit to the number of API calls per minute to work with the data contained in the organization. If a user is part of multiple organizations, Make limits API calls to each organization according to the organization's <code>apiLimit</code>. <br> <br> <div class=\"alert alert-warning\">If you don't specify the <code>apiLimit</code>, Make sets the <code>apiLimit</code> to 0, which disables access to the data in the organization with the API.</div></p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 0</li> <li><strong>max:</strong> 2000</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>fulltext</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Allows full text search in the scenario execution history to the users in the organization.</p> <p><strong>Type:</strong> boolean</p> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>dedicatedSso</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Allows logging in to the White Label platform with a custom single sign-on solution.</p> <p><strong>Type:</strong> boolean</p> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>installPublicApps</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Allows installation of apps that were created by user that is not part of the organization.</p> <p><strong>Type:</strong> boolean</p> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>creatingTemplates</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Allows the users to create scenario templates.</p> <p><strong>Type:</strong> boolean</p> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>scenarios</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Sets the maximum number of active scenarios in the organization. The number is unlimited if not specified.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 1</li> <li><strong>max:</strong> 1000000</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>dlqStorage</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Sets the maximum storage in bytes for the scenario incomplete executions.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 1</li> <li><strong>max:</strong> 2097152000</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>executionTime</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>The maximum duration of a scenario execution in minutes.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 5</li> <li><strong>max:</strong> 45</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>customVariables</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Allows using the <a href=\"https://www.make.com/en/help/functions/variables#custom-variables-1529751\">custom variables</a> feature.</p> <p><strong>Type:</strong> boolean</p> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>customFunctions</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Allows using the <a href=\"https://www.make.com/en/help/functions/custom-functions\">custom functions</a> feature.</p> <p><strong>Type:</strong> boolean</p> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>fslimit</code> <span class=\"required\">REQUIRED</span> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Maximum individual file size in bytes that a scenario in the organization can transfer.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 5242880</li> <li><strong>max:</strong> 1048576000</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>productManagement</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Defines the subscription management method. Organizations in the Make White Label platform must have this parameter set to \"salesforce\". You cannot change the value of this parameter.</p> <p><strong>Type:</strong> enum&lt;string&gt;</p> <p><strong>Values:</strong></p> <ul> <li>salesforce</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>iolimit</code> <span class=\"required\">REQUIRED</span> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Sets the maximum size of input and output webhook queues.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>min:</strong> 10</li> <li><strong>max:</strong> 10000</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>gracePeriod</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Sets a time limit in days during which the organization has access to all of its features without payment. Organizations in the Make White Label platform must have this parameter set to 0. You cannot change the value of this parameter.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li>0</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>appslimit</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Sets the maximum number of apps used by all active scenarios in the organization. Unlimited if not specified.</p> <p><strong>Type:</strong> uinteger</p> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>onDemandScheduling</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Allows <a href=\"https://www.make.com/en/help/scenarios/scheduling-a-scenario#on-demand-scheduling-935240\">scenario On-Demand scheduling</a>.</p> <p><strong>Type:</strong> boolean</p> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>scenarioIO</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Allows the <a href=\"https://www.make.com/en/help/scenarios/scenario-inputs\">scenario inputs</a> feature for the scenarios in the organization.</p> <p><strong>Type:</strong> boolean</p> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>customProperties</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Enables the <a href=\"https://www.make.com/en/help/scenarios/custom-scenario-properties\">custom properties</a> feature. With custom properties, your users can add custom metadata to scenarios and use them to sort and filter their scenarios. <br/> The specified number sets the maximum number of structure items in a custom property structure.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>default:</strong> 100</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>auditLogsDays</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Set the parameter to a non-zero number to enable the <a href=\"https://www.make.com/en/help/access-management/audit-logs\">audit logs</a> feature. With audit logs, you can track and review user actions in Make. In addition, users with the \"Owner,\" \"Admin\" and \"Team Admin\" roles can view audit logs in Make.<br/> The specified number is the amount of days for which Make stores the audit log entries. <br/> The default value 0 disables the feature.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>default:</strong> 0</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>webhookLogRetentionDays</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Sets the number of days for which Make keeps webhook logs.</p> <p><strong>Type:</strong> uinteger</p> <p><strong>Values:</strong></p> <ul> <li><strong>default:</strong> 3</li> <li><strong>min:</strong> 3</li> <li><strong>max:</strong> 30</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>maxInterruptedExecutionDays</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Sets the maximum number of days a single scenario execution can stay interrupted before Make cancels it.</p> <p><strong>Type:</strong> enum&lt;uinteger&gt;</p> <p><strong>Values:</strong></p> <ul> <li>7</li> <li>30</li> <li>90</li> <li>365</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>dynamicDependencies</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Enables dynamic dependencies in a scenario. Dynamic dependencies allow users to map Make entities, like connections or data stores, in their scenarios.<br/> For example, <a href=\"https://www.make.com/en/help/connections/dynamic-connections\">dynamic connections</a> are dynamic dependencies.</p> <p><strong>Type:</strong> boolean</p> <p><strong>Values:</strong></p> <ul> <li><strong>default:</strong> false</li> </ul> </td> </tr> <tr itemscope itemprop=\"mainEntity\" itemtype=\"https://schema.org/Question\"> <td> <p itemprop=\"name\"> <code>dynamicConnections</code> </p> </td> <td itemscope itemprop=\"acceptedAnswer\" itemtype=\"https://schema.org/Answer\"> <div itemprop=\"text\"> <p>Enables <a href=\"https://www.make.com/en/help/connections/dynamic-connections\">dynamic connections</a> in a scenario. To allow using dynamic connections, you have to enable dynamic dependencies as well.</p> <p><strong>Type:</strong> boolean</p> <p><strong>Values:</strong></p> <ul> <li><strong>default:</strong> false</li> </ul> </td> </tr> </tbody> </table> </div>\n<!-- license input anchor end -->\n","security":[{"token":["admin:write","organizations:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the organization."},"timezoneId":{"type":"integer","description":"The ID of the timezone associated with the organization. Get the list of the timezone IDs with the API call `GET /enums/timezones`."},"countryId":{"type":"integer","description":"The ID of the country associated with the organization. Get the list of the country IDs with the API call `GET /enums/countries`."},"userOrgAdmin":{"type":"integer","description":"The ID of the user who will be the admin of the organization. Get the list of the user IDs with the API call `GET /admin/users`."},"license":{"type":"object","additionalProperties":{},"description":"The resources and features available to the users in the organization."}},"required":["name"]},"examples":{"useDefaults":{"summary":"Use defaults","description":"Create a new organization. You have to specify only the name of the organization. The rest is set to default values.\n\nOrganizations timezone and country are set the same as your account timezone and country. You are set as the organization admin. The organization license is set from the default license parameters.","value":{"name":"Default organization"}},"specifyManually":{"summary":"Set manually","description":"Fill all available parameters with custom values.","value":{"name":"Custom organization","timezoneId":76,"countryId":105,"userOrganizationAdmin":5,"license":{"dslimit":40,"fslimit":1048576000,"iolimit":1000,"dsslimit":230686720,"interval":4,"transfer":104857600,"scenarios":4,"operations":50000000,"customVariables":true}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"serviceName":{"type":"string"},"nextReset":{"type":"string","format":"date-time"},"lastReset":{"type":"string","format":"date-time"},"isPaused":{"type":"boolean"},"countryId":{"type":"integer"},"timezoneId":{"type":"integer"},"deleted":{"type":"boolean"},"license":{"type":"object","additionalProperties":{}},"zone":{"type":"string"},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"productName":{"type":"string"},"ssoType":{"type":"string","nullable":true,"description":"The SSO authentication type configured for the organization. Possible values: 'oauth2', 'saml2', 'none', or null if not configured."},"scenarios":{"type":"integer"},"activeScenarios":{"type":"integer"},"tfaEnforced":{"type":"boolean","description":"Whether TFA is enforced for the organization."},"userSessionTimeout":{"type":"integer","description":"How long, in seconds, a user of the organization may stay inactive before being logged out.","example":86400},"featureControls":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"enabled":{"type":"boolean"}}}},"privateSpaces":{"type":"array","description":"The private spaces the requesting user is a member of within this organization.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"isOwner":{"type":"boolean","description":"Whether the requesting user owns this private space."},"hasAdminVisibility":{"type":"boolean","description":"Whether organization admins have visibility into this private space, i.e. whether the organization's \"add admins as observers\" private-spaces setting is currently enabled."}}}}}}}},"examples":{"useDefaults":{"value":{"organization":{"name":"Default organization","timezoneId":113,"countryId":42,"license":{"dslimit":50,"fslimit":1048576000,"iolimit":10000,"dsslimit":230686720,"interval":1,"transfer":104857600,"scenarios":4,"operations":800000000,"gracePeriod":0,"customVariables":false,"productManagement":"salesforce"},"serviceName":"default","teams":[{"id":null,"name":"My team"}],"isPaused":false,"zone":"white.label.zone.com","externalId":null,"scenarios":0,"activeScenarios":0,"deleted":false},"userOrganizationRole":{"userId":4,"organizationId":22,"userRoleId":11,"invitation":null,"ssoPending":false}}},"specifyManually":{"value":{"organization":{"name":"Custom organization","timezoneId":76,"countryId":105,"userOrganizationAdmin":5,"license":{"dslimit":40,"fslimit":1048576000,"iolimit":1000,"dsslimit":230686720,"interval":4,"transfer":104857600,"scenarios":4,"operations":50000000,"gracePeriod":0,"customVariables":true,"productManagement":"salesforce"},"serviceName":"default","teams":[{"id":null,"name":"My team"}],"isPaused":false,"zone":"white.label.zone.com","externalId":null,"scenarios":0,"activeScenarios":0,"deleted":false,"tfaEnforced":false},"userOrganizationRole":{"userId":5,"organizationId":22,"userRoleId":11,"invitation":null,"ssoPending":false}}}}}}}}}},"/admin/organizations/lookup":{"get":{"x-private":true,"tags":["Admin / Organizations"],"summary":"Lookup organizations by ID or name","description":"Looks up organizations by exact numeric ID or partial, case-insensitive name. Exactly one of `id` or `name` is required. Because organization names are not unique and are matched partially, this returns a capped list of minimal projections (`id`, `name`, `deleted`) used to navigate to the organization detail. Soft-deleted organizations are included. An empty list is returned when nothing matches.","security":[{"token":["admin:read","organizations:read"]}],"parameters":[{"name":"id","in":"query","required":false,"description":"Exact organization ID. Mutually exclusive with `name` — provide exactly one of `id` or `name`.","schema":{"type":"integer","minimum":1,"maximum":2147483647},"example":42},{"name":"name","in":"query","required":false,"description":"Partial, case-insensitive organization name. Mutually exclusive with `id` — provide exactly one of `id` or `name`.","schema":{"type":"string","minLength":1,"maxLength":128},"example":"Acme"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["organizations"],"properties":{"organizations":{"type":"array","items":{"type":"object","required":["id","name","deleted"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"deleted":{"type":"boolean"}}}}}},"examples":{"byId":{"summary":"Lookup by id","value":{"organizations":[{"id":42,"name":"Acme Inc","deleted":false}]}},"byName":{"summary":"Lookup by partial name","value":{"organizations":[{"id":42,"name":"Acme Inc","deleted":false},{"id":51,"name":"Acme Labs","deleted":true}]}}}}}},"400":{"description":"Invalid input parameters."},"403":{"description":"Insufficient rights."}}}},"/admin/organizations/{organizationId}":{"patch":{"x-private":true,"tags":["Admin / Organizations"],"summary":"Update organization","description":"Updates the specified organization. Updates only parameters specified in the request body. Check the [API call to create organizations](https://www.make.com/en/api-documentation/admin-organizations-post) for a full breakdown of the organization license parameters.\n\n<div class=\"alert alert-warning\">When updating organization's license, Make replaces the old organization's license with the new one. You have to send a valid <code>license</code> object with all the license parameters you want to set for the organization.</div>\n\nYou can set the next reset of the organization's consumption with the `nextReset` parameter. \n\nUse the `performReset` parameter to reset the organization's consumption with the API call. You can set the next reset with the `nextReset` parameter, or Make sets the next reset according to the organization's `resetPeriod`.","security":[{"token":["admin:write","organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":10}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the organization."},"timezoneId":{"type":"integer","description":"The ID of the timezone associated with the organization. Get the list of the timezone IDs with the API call `GET /enums/timezones`."},"countryId":{"type":"integer","description":"The ID of the country associated with the organization. Get the list of the country IDs with the API call `GET /enums/countries`."},"nextReset":{"type":"string","format":"date-time","description":"The moment to which you want to schedule the reset of the organization's consumption."},"performReset":{"type":"boolean","description":"Set to `true` if you want to reset the organization's consumption with the API call. Make sets the next reset of the organization's consumption either to the moment from the `nextReset` parameter, or according to the organization's restart period."},"license":{"type":"object","additionalProperties":{},"description":"The resources and features available to the users in the organization."}}},"examples":{"update-org":{"summary":"Update organization","description":"Updates the organization's `name`, timezone, country and `license`.","value":{"name":"Updated organization","timezoneId":113,"countryId":1,"license":{"dslimit":20,"fslimit":6242880,"iolimit":10000,"apiLimit":2000,"dsslimit":524288000,"fulltext":true,"interval":1,"transfer":105000000,"operations":100000,"executionTime":45,"restartPeriod":"1 month","customVariables":true,"creatingTemplates":true,"installPublicApps":true}}},"update-reset":{"summary":"Reset organization's consumption","description":"Resets the organization's consumption immediately and sets the next reset to 04. 07. 2023 12:00.","value":{"performReset":true,"nextReset":"2024-07-04T12:00:00.000Z"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"serviceName":{"type":"string"},"nextReset":{"type":"string","format":"date-time"},"lastReset":{"type":"string","format":"date-time"},"isPaused":{"type":"boolean"},"countryId":{"type":"integer"},"timezoneId":{"type":"integer"},"deleted":{"type":"boolean"},"license":{"type":"object","additionalProperties":{}},"zone":{"type":"string"},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"productName":{"type":"string"},"ssoType":{"type":"string","nullable":true,"description":"The SSO authentication type configured for the organization. Possible values: 'oauth2', 'saml2', 'none', or null if not configured."},"scenarios":{"type":"integer"},"activeScenarios":{"type":"integer"},"tfaEnforced":{"type":"boolean","description":"Whether TFA is enforced for the organization."},"userSessionTimeout":{"type":"integer","description":"How long, in seconds, a user of the organization may stay inactive before being logged out.","example":86400},"featureControls":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"enabled":{"type":"boolean"}}}},"privateSpaces":{"type":"array","description":"The private spaces the requesting user is a member of within this organization.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"isOwner":{"type":"boolean","description":"Whether the requesting user owns this private space."},"hasAdminVisibility":{"type":"boolean","description":"Whether organization admins have visibility into this private space, i.e. whether the organization's \"add admins as observers\" private-spaces setting is currently enabled."}}}}}}}},"examples":{"update-org":{"value":{"organization":{"id":10,"name":"Updated organization","timezoneId":113,"countryId":1,"lastReset":"2023-06-05T12:00:00.000Z","nextReset":"2023-07-05T12:00:00.000Z","license":{"dslimit":20,"fslimit":6242880,"iolimit":10000,"apiLimit":2000,"dsslimit":524288000,"fulltext":true,"interval":1,"transfer":105000000,"operations":100000,"executionTime":45,"restartPeriod":"1 month","customVariables":true,"creatingTemplates":true,"installPublicApps":true,"gracePeriod":0,"productManagement":"salesforce"},"serviceName":"default","teams":[{"id":155364,"name":"My team"}],"isPaused":false,"zone":"white.label.example.com","externalId":null,"scenarios":0,"activeScenarios":0,"deleted":false,"tfaEnforced":false}}},"update-reset":{"value":{"organization":{"id":12,"name":"Reset organization","timezoneId":113,"countryId":1,"lastReset":"2023-06-04T12:00:00.000Z","nextReset":"2023-07-04T12:00:00.000Z","license":{"dslimit":20,"fslimit":6242880,"iolimit":10000,"apiLimit":2000,"dsslimit":524288000,"fulltext":true,"interval":1,"transfer":105000000,"operations":100000,"executionTime":45,"restartPeriod":"1 month","customVariables":true,"creatingTemplates":true,"installPublicApps":true,"gracePeriod":0,"productManagement":"salesforce"},"serviceName":"default","teams":[{"id":155468,"name":"My team"}],"isPaused":false,"zone":"white.label.example.com","externalId":null,"scenarios":0,"activeScenarios":0,"deleted":false,"tfaEnforced":false}}}}}}}}},"delete":{"x-private":true,"tags":["Admin / Organizations"],"summary":"Delete an organization","description":"Deletes the specified organization. All data associated with the organization and with the teams in the organization, such as data stores and scenarios, are also deleted.","security":[{"token":["admin:write","organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":10}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"number"}}},"example":{"organization":10}}}}}}},"/admin/organizations/{organizationId}/billing-audit-logs":{"get":{"x-internal":true,"tags":["Admin / Organizations"],"summary":"Get billing audit logs","description":"Get list of billing audit logs for given organization.","security":[{"token":["admin:read","organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":10},{"name":"type","in":"query","description":"Type of the audit event. Partial match.","schema":{"type":"string"},"required":false,"example":"subscription.change."},{"name":"source","in":"query","description":"Source of the audit event. One of 'user', 'admin' or 'auto'.","schema":{"type":"string"},"required":false,"example":"admin"},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"billingLogs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"source":{"type":"string"},"metadata":{"type":"object"},"authorId":{"type":"integer"},"authorEmail":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"examples":{"default":{"summary":"All data","description":"Get billing audit logs for given organization.","value":{"billingLogs":[{"id":"123","type":"subscription.change.initiated","source":"user","authorId":202,"authorEmail":"user@user.com","createdAt":"2023-01-03T11:12:40.644Z","metadata":{"couponCode":"foobar","priceId":30}},{"id":"124","type":"subscription.change.succeeded","source":"auto","authorId":null,"authorEmail":null,"createdAt":"2023-01-03T11:13:40.644Z","metadata":{"couponCode":"foobar","priceId":30}}],"pg":{"sortBy":"id","limit":10000,"sortDir":"desc","offset":0}}}}}}}}}},"/admin/organizations/{organizationId}/universal-discount-options":{"get":{"x-internal":true,"tags":["Admin / Organizations"],"summary":"Get universal discount options","description":"Retrieves available universal discount options for the organization.","security":[{"token":["admin:read","organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer","minimum":1},"required":true,"example":10}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","description":"Display label for the discount option","example":"GRANDFATHERED_PRICE"},"value":{"type":"string","description":"Value identifier for the discount option","example":"GRANDFATHERED_PRICE"},"forceActivateImmediately":{"type":"boolean","description":"Whether this discount type must be activated immediately (not redeemable by users)","example":false},"defaultBannerText":{"type":"string","nullable":true,"description":"Default banner text for this discount type","example":null},"defaultPostClaimText":{"type":"string","nullable":true,"description":"Default post-claim text for this discount type","example":null},"defaultPercentOff":{"type":"number","nullable":true,"description":"Default discount percentage for this type","example":20}},"required":["label","value"]}}},"required":["options"]},"example":{"options":[{"label":"GRANDFATHERED_PRICE","value":"GRANDFATHERED_PRICE","forceActivateImmediately":false,"defaultBannerText":null,"defaultPostClaimText":null,"defaultPercentOff":null},{"label":"SOME_OTHER_DISCOUNT","value":"SOME_OTHER_DISCOUNT","forceActivateImmediately":true,"defaultBannerText":"Special discount offer!","defaultPostClaimText":"Your discount is now active!","defaultPercentOff":20}]}}}}}}},"/admin/organizations/{organizationId}/assign-universal-discount":{"post":{"x-internal":true,"tags":["Admin / Organizations"],"summary":"Assign universal discount","description":"Assigns a universal discount to the organization.","security":[{"token":["admin:write","organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer","minimum":1},"required":true,"example":10}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"discountType":{"type":"string","description":"The type of discount to assign","example":"SOME_DISCOUNT_TYPE"},"percentOff":{"type":"number","minimum":1,"maximum":100,"description":"The percentage off for the discount (1-100)","example":23},"activateImmediately":{"type":"boolean","description":"Whether to activate the discount immediately.","example":true},"redeemUntil":{"type":"string","format":"date","nullable":true,"description":"The date until which the discount can be redeemed. Must not be in the past. Send null for no expiry.","example":"2024-12-31"},"durationInMonths":{"type":"integer","minimum":1,"description":"The duration of the discount in months","example":12},"bannerText":{"type":"string","nullable":true,"maxLength":1000,"description":"Custom banner text for the discount (overrides the type default)","example":"Special offer just for you!"},"postClaimText":{"type":"string","nullable":true,"maxLength":1000,"description":"Custom text shown after the discount has been claimed (overrides the type default)","example":"Your discount is now active!"}},"required":["discountType","percentOff"]},"example":{"discountType":"SOME_DISCOUNT_TYPE","percentOff":23,"activateImmediately":false,"redeemUntil":"2024-12-31","durationInMonths":12,"bannerText":"Special offer just for you!","postClaimText":"Your discount is now active!"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","description":"Response from the cashier service","additionalProperties":true},"example":{"ok":1}}}}}}},"/admin/organizations/{organizationId}/universal-discount":{"delete":{"x-internal":true,"tags":["Admin / Organizations"],"summary":"Remove universal discount","description":"Removes the active or dormant universal discount from the organization. Active discounts are terminated and the Stripe coupon is removed. Dormant discounts are expired.","security":[{"token":["admin:write","organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":10}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer","example":1}}},"example":{"ok":1}}}}}}},"/admin/organizations/{organizationId}/subscription/customer/price-group":{"patch":{"x-internal":true,"tags":["Admin / Organizations"],"summary":"Change the customer's price group","description":"Moves the organization's cashier customer to another price group. The running subscription is\nnot changed, open Stripe Checkout sessions of the customer are expired, and the change is\nwritten to the billing audit log. Fails with `IM005` when the group does not exist, is already\nassigned, is disabled, or has its feature flag off, and with `SC404` when the organization has\nno cashier customer. Requires the admin permission \"organization subscription edit\".\n","security":[{"token":["admin:write","organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer","minimum":1},"required":true,"example":10}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"priceGroupId":{"type":"integer","minimum":1,"maximum":2147483647,"description":"ID of the target price group; it must be reported as `isAssignable` by `GET /admin/price-groups`","example":2}},"required":["priceGroupId"]},"examples":{"default":{"summary":"Move the customer to price group 2","value":{"priceGroupId":2}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer","example":1}},"required":["ok"]},"examples":{"default":{"summary":"Price group changed","value":{"ok":1}}}}}}}}},"/admin/price-groups":{"get":{"x-internal":true,"tags":["Admin / Organizations"],"summary":"List price groups","description":"Lists every cashier price group, including disabled and experiment groups. A customer belongs to\nexactly one group. A group can be assigned with\n`PATCH /admin/organizations/{organizationId}/subscription/customer/price-group`. Requires the admin permission\n\"organization subscription edit\".\n","security":[{"token":["admin:read"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"priceGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Price group ID","example":1},"name":{"type":"string","description":"Internal name of the price group","example":"default"},"isDefault":{"type":"boolean","description":"Whether this is the default group assigned when no geo rule matches","example":true},"isExperiment":{"type":"boolean","description":"Whether the group belongs to a pricing experiment","example":false},"featureFlag":{"type":"string","nullable":true,"description":"GrowthBook flag gating automatic assignment to this group, or null when ungated","example":null},"disabledAt":{"type":"string","format":"date-time","nullable":true,"description":"When the group was retired; a retired group cannot be assigned","example":null},"isAssignable":{"type":"boolean","description":"Whether the group can be assigned right now; false when the group is retired or its feature flag is off","example":true}},"required":["id","name","isDefault","isExperiment","featureFlag","disabledAt","isAssignable"]}}},"required":["priceGroups"]},"examples":{"default":{"summary":"Default and one geo price group","value":{"priceGroups":[{"id":1,"name":"default","isDefault":true,"isExperiment":false,"featureFlag":null,"disabledAt":null,"isAssignable":true},{"id":2,"name":"T1","isDefault":false,"isExperiment":false,"featureFlag":"price-group-t1","disabledAt":null,"isAssignable":true}]}}}}}}}}},"/admin/hooks/{hookId}/reset-gone":{"post":{"x-private":true,"tags":["Admin / Hooks"],"summary":"Reset an expired webhook","description":"Recovers a webhook that the gateway flagged as expired (\"gone\") because no scenario was listening to it\nfor longer than the gone interval, for example after a scenario was deleted and later restored.\n\nThe call clears the webhook's `gone` flag, refreshes its last-used timestamp so it is not expired again\non the next request, writes an audit trace, and broadcasts a message asking every gateway instance to drop the\nwebhook from its in-memory rejection cache so incoming requests are accepted without a gateway restart.\n\nThe database change always wins: when the gateway broadcast fails, the response still succeeds and\nreports `gatewayNotified: false`. The call is idempotent and can be repeated; resetting a webhook that is\nnot expired only refreshes its last-used timestamp.\n\nRequires the `scenario edit` admin permission.\n","security":[{"token":["admin:write"]}],"parameters":[{"name":"hookId","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":2147483647},"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of webhooks.","examples":{"reset":{"value":654}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["success","gatewayNotified"],"properties":{"success":{"type":"boolean","description":"Always `true`; the webhook was reset in the database."},"gatewayNotified":{"type":"boolean","description":"Whether the broadcast was sent, that is, the message broker accepted it. It does not confirm that any gateway received it. When `false`, the webhook is reset in the database but the broadcast was not sent; repeat the call to retry it. Gateways that miss the broadcast pick up the reset within about 15 minutes anyway, because of their periodic rolling restart."}}},"examples":{"reset":{"summary":"Webhook reset and gateway notified","value":{"success":true,"gatewayNotified":true}},"reset-gateway-not-notified":{"summary":"Webhook reset, gateway broadcast failed","value":{"success":true,"gatewayNotified":false}}}}}},"400":{"description":"The `hookId` path parameter is not a positive integer.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"suberrors":{"type":"array","description":"Individual validation failures reported by the parameter validator.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"invalid-hook-id":{"summary":"Invalid hookId","value":{"code":"SC400","message":"Bad Request","suberrors":[{"message":"Expected integer to be greater or equal to 1","name":"ValidationError"}]}}}}}},"401":{"description":"The access token lacks the `admin:write` scope, or authentication is missing.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"examples":{"access-denied":{"summary":"Missing scope","value":{"code":"IM001","message":"Access denied."}}}}}},"403":{"description":"The caller is not an administrator or lacks the `scenario edit` admin permission.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"examples":{"insufficient-rights":{"summary":"Insufficient rights","value":{"code":"IM002","message":"Insufficient rights."}}}}}},"404":{"description":"No webhook with the given ID exists.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"examples":{"webhook-not-found":{"summary":"Webhook does not exist","value":{"code":"IM450","message":"Hook not found."}}}}}}}}},"/admin/experiments/organization/{organizationId}":{"get":{"x-internal":true,"tags":["Admin / Experiments"],"summary":"Get experiments for organization","description":"Returns the active experiments configuration for the specified organization, as provided by the cashier service.","parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":10}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"experiments":{"type":"object","additionalProperties":{},"description":"Experiments configuration for the organization."}}},"examples":{"default":{"summary":"Organization experiments","value":{"experiments":{"isMakePlanExperiment":true}}}}}}},"404":{"description":"No experiments found for the organization.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}},"example":{"message":"Not Found"}}}}}}},"/admin/install/apps/{app}/logs":{"get":{"x-private":true,"tags":["Admin / Install / Apps / Logs"],"summary":"List organizations","description":"Get logs for given app.","security":[{"token":["admin:read","organizations:read"]}],"parameters":[{"name":"app","in":"path","description":"The application name.","schema":{"type":"string"},"required":true,"example":"wordpress"},{"name":"init","in":"query","description":"The moment the installation started, as returned in `appInstall.init` by the install request. Each installation has its own log file, named after this value, so it selects which log is returned.","schema":{"type":"string","format":"date-time"},"required":true,"example":"2026-08-25T14:30:12.456Z"},{"name":"correlationId","in":"query","description":"Filter by Correlation ID.","schema":{"type":"string"},"required":false,"example":"abcd1234"},{"name":"since","in":"query","description":"Filter logs by date.","schema":{"type":"string"},"required":false,"example":"10-01-2023"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"logs":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"time":{"type":"string"}}}},"correlationId":{"type":"string"},"dateSince":{"type":"string"},"error":{"type":"string"}}}}}}}}},"/admin/apps/{app}/installation-history":{"get":{"x-private":true,"tags":["Admin / Apps / Installation History"],"summary":"List installation history","description":"Returns the recorded installation attempt history for a single native app, ordered by most recent first.\n","security":[{"token":["admin:read","apps:read"]}],"parameters":[{"name":"app","in":"path","description":"The native app name.","schema":{"type":"string"},"required":true,"example":"agent-ai"},{"name":"pg[limit]","in":"query","description":"Page size (max 1000).","schema":{"type":"integer","default":100},"required":false},{"name":"pg[offset]","in":"query","description":"Number of records to skip.","schema":{"type":"integer","default":0},"required":false},{"name":"pg[sortBy]","in":"query","description":"Field to sort by.","schema":{"type":"string","enum":["createdAt"],"default":"createdAt"},"required":false},{"name":"pg[sortDir]","in":"query","description":"Sort direction.","schema":{"type":"string","enum":["asc","desc"],"default":"desc"},"required":false},{"name":"pg[returnTotalCount]","in":"query","description":"When true, the response pagination block contains the total record count. This option is supported only for session (cookie) authentication. Token-authenticated requests that send `pg[returnTotalCount]=true` are rejected with HTTP 400.\n","schema":{"type":"boolean","default":false},"required":false}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"installationHistory":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Surrogate ID of the history record."},"appName":{"type":"string"},"appVersion":{"type":"integer","nullable":true,"description":"Major version installed by this action. Null when the app was uninstalled."},"appVersionFull":{"type":"string","nullable":true,"description":"Full semver version installed by this action (e.g. \"1.5.0\"). Null when the app was uninstalled."},"previousVersion":{"type":"integer","nullable":true,"description":"Major version that was installed before this action. Null on first install."},"previousVersionFull":{"type":"string","nullable":true,"description":"Full semver version that was installed before this action. Null on first install."},"status":{"type":"string","enum":["started","completed","failed"],"description":"Lifecycle status of the install. 'started' is written synchronously before the install runs; 'completed' or 'failed' is written when it finishes. Orphan 'started' rows indicate an interrupted install."},"userId":{"type":"integer","description":"ID of the admin who performed the action."},"userName":{"type":"string","nullable":true},"userEmail":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"The moment of the record. For a `started` record it equals `appInstall.init` of the install response, so it can be passed as `init` to `/admin/install/apps/{app}/check` and `/admin/install/apps/{app}/logs` to read the log of that installation."}}}},"pg":{"type":"object","properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"returnTotalCount":{"type":"boolean"},"totalCount":{"type":"string","pattern":"^\\d+$","nullable":true}}}}}}}},"400":{"description":"Invalid pagination parameters.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Application error code."},"message":{"type":"string","description":"Error message."},"detail":{"type":"array","description":"Validation error details.","items":{"type":"string"}}}},"example":{"code":"SC400","message":"Invalid input parameters","detail":["Validation failed for 1 parameter(s).","Parameter `pg[returnTotalCount]` is supported only for session authentication."]}}}}}}},"/admin/sdk/app-review/categories":{"put":{"tags":["Admin / SDK Apps / Review"],"x-private":true,"summary":"Sync review form categories","description":"Replaces the category taxonomy of the new SDK app review form with the posted list. The catalog's source of truth is external (maintained outside Make and pushed here by a sync script), so this endpoint takes the **whole** list and merges it — it is not a per-category create/update:\n* an entry whose `slug` is new is created; * an entry whose `slug` already exists has its `name` and display order updated; * an entry whose `slug` was retired by an earlier sync is brought back; * a category or subcategory the list no longer contains is retired — it stops being\n  offered by the form, but is **not** deleted, so a slug already stored in a review\n  form keeps resolving to its label. A later sync that lists it again revives the same\n  row.\n\nDisplay order is the order of the array (and, for subcategories, of each `subcategories` array). `slug` is optional: when omitted it is derived from the label (diacritics stripped, lowercased, runs of non-alphanumerics collapsed to a dash, so `\"Microsoft (Enterprise)\"` → `microsoft-enterprise`). Pin an explicit `slug` whenever the label may be reworded later — the slug is the identity stored in review forms, so letting it follow a rename retires the old value and creates a new one instead of relabelling in place. A label with no ASCII alphanumerics at all (e.g. CJK-only) cannot be derived from and is rejected with `400` (IM005); pass a `slug` for it.\nThe operation is idempotent: re-posting an unchanged list reports no changes and sends nothing anywhere, which makes it safe to run on a schedule. An empty array is rejected rather than treated as \"retire everything\" — that payload is almost always a syncing script whose upstream fetch came back empty.\nThe catalog is platform-global and HQ-mastered. On a multi-zone (HQ-managed) installation the zone that accepts this request computes the **diff** between the posted list and its catalog and hands the diff to HQ; nothing is applied locally by the request itself. HQ applies the diff to the master copy and broadcasts it to every zone — including this one, which is how the local catalog converges, typically within a second. A read issued immediately after this call may therefore still serve the previous catalog. When HQ cannot be reached the request fails with `503` and nothing was changed anywhere — simply retry. On a single-instance (master mode) installation there is no HQ and the diff is applied locally within the request.\nAvailable only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["admin:write","sdk-apps:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","minItems":1,"maxItems":200,"description":"The complete category list, in display order.","items":{"type":"object","additionalProperties":false,"required":["category"],"properties":{"category":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable label of the category."},"slug":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"Stable identifier of the category. Optional — derived from `category` when omitted. Must already be in canonical form."},"subcategories":{"type":"array","maxItems":500,"description":"The category's subcategories in display order. Omit or pass an empty array for a category with none.","items":{"description":"Either the subcategory's label, or an object pinning an explicit slug to it.","oneOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable label of the subcategory."},"slug":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"Stable identifier within the owning category. Optional — derived from `name` when omitted."}}}]}}}}},"examples":{"full-sync":{"summary":"A catalog export, with one slug pinned and one subcategory slug pinned","value":[{"category":"App Families","subcategories":["Microsoft (Enterprise)","Pipedrive"]},{"category":"Built-in Apps","slug":"built-in-apps","subcategories":["Universal Connectors",{"name":"Mobile App","slug":"mobile-app"},"Built-in Tools"]}]}}}}},"responses":{"200":{"description":"The catalog as posted (normalized — slugs resolved, labels trimmed), which is the state every zone converges to once the diff lands, plus what the sync changed. `changes` lists slugs (subcategories as `<categorySlug>/<subcategorySlug>`) so the syncing script can log them; all four buckets are empty when the posted list matched what was already stored.","content":{"application/json":{"schema":{"type":"object","properties":{"categories":{"type":"array","items":{"type":"object","description":"One category of the taxonomy offered by the new SDK app review form, with its subcategories. `slug` is the category's stable identity — it is what a review form stores in `categories` / `subcategories`, and it survives a rename of `name`. Array order is display order.","properties":{"slug":{"type":"string","maxLength":128,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"Stable identifier of the category. Either pinned explicitly by the catalog sync or derived from `name` (diacritics stripped, lowercased, every run of non-alphanumerics collapsed to a dash)."},"name":{"type":"string","maxLength":255,"description":"Human-readable label to show in the review form."},"subcategories":{"type":"array","description":"The category's subcategories in display order; empty when the category has none. The taxonomy is exactly two levels deep — a subcategory never has children of its own.","items":{"type":"object","properties":{"slug":{"type":"string","maxLength":128,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"Stable identifier of the subcategory, unique within its category (the same slug may appear under a different category)."},"name":{"type":"string","maxLength":255,"description":"Human-readable label to show in the review form."}}}}}}},"changes":{"type":"object","description":"What one catalog sync changed, per taxonomy level.","properties":{"categories":{"type":"object","description":"What one catalog sync did to one taxonomy level. Values are slugs, so a syncing script can log them verbatim; subcategories are keyed `<categorySlug>/<subcategorySlug>`, since a subcategory slug is only unique within its category. All four buckets are empty when the posted list matched what was already stored.","properties":{"created":{"type":"array","description":"Slugs that did not exist before this sync.","items":{"type":"string"}},"updated":{"type":"array","description":"Slugs whose label or display order changed.","items":{"type":"string"}},"restored":{"type":"array","description":"Slugs an earlier sync had retired and this one brought back.","items":{"type":"string"}},"removed":{"type":"array","description":"Slugs that were being offered and this sync retired.","items":{"type":"string"}}}},"subcategories":{"type":"object","description":"What one catalog sync did to one taxonomy level. Values are slugs, so a syncing script can log them verbatim; subcategories are keyed `<categorySlug>/<subcategorySlug>`, since a subcategory slug is only unique within its category. All four buckets are empty when the posted list matched what was already stored.","properties":{"created":{"type":"array","description":"Slugs that did not exist before this sync.","items":{"type":"string"}},"updated":{"type":"array","description":"Slugs whose label or display order changed.","items":{"type":"string"}},"restored":{"type":"array","description":"Slugs an earlier sync had retired and this one brought back.","items":{"type":"string"}},"removed":{"type":"array","description":"Slugs that were being offered and this sync retired.","items":{"type":"string"}}}}}}}},"examples":{"full-sync":{"summary":"First sync of the example payload","value":{"categories":[{"slug":"app-families","name":"App Families","subcategories":[{"slug":"microsoft-enterprise","name":"Microsoft (Enterprise)"},{"slug":"pipedrive","name":"Pipedrive"}]},{"slug":"built-in-apps","name":"Built-in Apps","subcategories":[{"slug":"universal-connectors","name":"Universal Connectors"},{"slug":"mobile-app","name":"Mobile App"},{"slug":"built-in-tools","name":"Built-in Tools"}]}],"changes":{"categories":{"created":["app-families","built-in-apps"],"updated":[],"restored":[],"removed":[]},"subcategories":{"created":["app-families/microsoft-enterprise","app-families/pipedrive","built-in-apps/universal-connectors","built-in-apps/mobile-app","built-in-apps/built-in-tools"],"updated":[],"restored":[],"removed":[]}}}},"no-op-sync":{"summary":"Re-posting the same list — nothing changed","value":{"categories":[{"slug":"app-families","name":"App Families","subcategories":[{"slug":"microsoft-enterprise","name":"Microsoft (Enterprise)"},{"slug":"pipedrive","name":"Pipedrive"}]}],"changes":{"categories":{"created":[],"updated":[],"restored":[],"removed":[]},"subcategories":{"created":[],"updated":[],"restored":[],"removed":[]}}}}}}}},"400":{"description":"The list is not a valid catalog — a slug is repeated, a label is blank, a label cannot be turned into a slug, or the array is empty or malformed.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Application error code."},"message":{"type":"string","description":"Error message."},"detail":{"type":"array","description":"Validation error details.","items":{"type":"string"}}}},"examples":{"duplicate-slug":{"summary":"Two entries resolve to the same category slug","value":{"code":"IM005","message":"Category slug \"built-in-apps\" is listed more than once."}},"underivable-slug":{"summary":"A label with no ASCII alphanumerics needs an explicit slug","value":{"code":"IM005","message":"Category \"日本語\" cannot be turned into a slug — pass an explicit \"slug\" for it."}},"empty-list":{"summary":"An empty array is rejected instead of retiring the whole catalog","value":{"code":"SC400","message":"Invalid input parameters","detail":["Expected array length to be greater or equal to 1"]}}}}}},"403":{"description":"The caller does not hold the `apps edit` admin permission.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"example":{"code":"IM002","message":"Insufficient rights."}}}},"503":{"description":"HQ could not be reached (multi-zone installations only). Nothing was changed anywhere — the sync is safe to retry once HQ is back.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"example":{"code":"SC503","message":"The catalog sync did not reach HQ — nothing was changed. Retry once HQ is reachable."}}}}}}},"/admin/sdk/apps/{app}/{version}/app-review":{"get":{"tags":["Admin / SDK Apps / Review"],"x-private":true,"summary":"Get app review state (reviewer)","description":"The reviewer's read of the new review flow for an app version — the same state the author sees through `GET /sdk/apps/{SDK_appName}/{SDK_appVersion}/app-review`: the lifecycle phase, the auto-saved draft, the submitted snapshot (`submittedForm` is what the reviewer should judge) and the history timeline. Requires an administrator with the `apps get` permission. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["admin:read","sdk-apps:read"]}],"parameters":[{"name":"app","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-crm-app"},{"name":"version","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","description":"State of the new SDK app review flow for one app version. The lifecycle phase either comes from the new flow's own storage or, while the new flow has never touched the app (`derivedFromLegacy: true`), is derived from the legacy review state (`approved`/`in_review` flags and the legacy review status). Every lifecycle step is traced to Trackman with the legacy event closest to it: the submission that requests the review as `apps_review_requested`, every other step (including the reviewer's) as `apps_review_form_updated`, whose `review_form.event` is the timeline event the step appended. Auto-saving the draft (`PUT …/app-review/form`) is not a step and is not traced.","properties":{"appName":{"type":"string","description":"Name of the SDK app."},"appVersion":{"type":"integer","description":"Major version of the SDK app."},"phase":{"type":"string","enum":["dormant","preparing","review","changes_required","approved","updating","update_review","changes_required_update","rereview"],"description":"Lifecycle phase of the review. `dormant` → `start` → `preparing` → `submit` → `review`; a reviewer then approves (`approved`) or requests changes (`changes_required`, reopened with `start-rereview` → `rereview` → `submit` back to `review`). An approved listing is updated through `start-update` → `updating` → `submit` → `update_review`, whose outcomes are `approved` or `changes_required_update` (re-reviewed through `rereview` back to `update_review`). `cancel` steps back one phase on every track."},"reviewStep":{"type":"string","enum":["auto","manual"],"nullable":true,"description":"Sub-step while `phase` is `review`/`update_review` — `manual` means the submission waits with Make (where every submission starts), `auto` means Make sent the automatic-review notes and waits on the developer to implement and confirm them. `null` in every other phase."},"rereviewOrigin":{"type":"string","enum":["changes_required","changes_required_update"],"nullable":true,"description":"While `phase` is `rereview`, the phase the re-review was started from. `null` otherwise."},"derivedFromLegacy":{"type":"boolean","description":"`true` when `phase` was derived from legacy review state instead of stored new-flow state."},"draftForm":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"submittedForm":{"nullable":true,"allOf":[{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}}],"description":"Snapshot of `draftForm` taken at the last submit. Later draft edits do not change it."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last submit."},"events":{"type":"array","description":"Review history timeline, oldest first.","items":{"type":"object","properties":{"type":{"type":"string","description":"Event type. Developer-side (`actor: developer`): `preparation_started`, `submitted`, `cancelled`, `submission_withdrawn`, `auto_notes_confirmed`, `rereview_started`, `rereview_cancelled`, `resubmitted`, `update_started`, `update_submitted`, `update_withdrawn`, `update_cancelled`. Make-side (`actor: make`, with an optional `note`): `auto_notes_sent`, `approved`, `changes_requested`, `update_approved`, `update_changes_requested`."},"actor":{"type":"string","enum":["developer","make"],"description":"Which side of the review produced the event."},"note":{"type":"string","description":"Optional free-text detail (e.g. the reviewer's request). Omitted when empty."},"createdAt":{"type":"string","format":"date-time","description":"When the event happened."}}}},"updatedAt":{"type":"string","format":"date-time","nullable":true,"description":"Last modification of the new-flow state. `null` while no new-flow row exists."}}}}},"examples":{"in-review":{"summary":"A submission waiting for the reviewer","value":{"review":{"appName":"my-crm-app","appVersion":1,"phase":"review","reviewStep":"manual","rereviewOrigin":null,"derivedFromLegacy":false,"draftForm":{"vendorRelationship":"direct","testScenarioUrls":["https://eu2.make.com/123456/scenarios/789012/edit"],"apiDocsUrl":"https://developers.example.com"},"submittedForm":{"vendorRelationship":"direct","testScenarioUrls":["https://eu2.make.com/123456/scenarios/789012/edit"],"apiDocsUrl":"https://developers.example.com"},"submittedAt":"2026-08-24T10:20:00.000Z","events":[{"type":"preparation_started","actor":"developer","createdAt":"2026-08-24T10:00:00.000Z"},{"type":"submitted","actor":"developer","createdAt":"2026-08-24T10:20:00.000Z"},{"type":"auto_notes_confirmed","actor":"developer","createdAt":"2026-08-24T11:00:00.000Z"}],"updatedAt":"2026-08-24T11:00:00.000Z"}}}}}}},"403":{"description":"The caller is not an administrator with the `apps get` permission.","content":{"application/json":{"schema":{"type":"object"},"examples":{"forbidden":{"summary":"Insufficient rights","value":{"message":"Insufficient rights.","detail":"Access denied.","code":"IM002"}}}}}},"404":{"description":"The app version does not exist.","content":{"application/json":{"schema":{"type":"object"},"examples":{"not-found":{"summary":"Unknown app","value":{"message":"Entity not found.","detail":"SDK app not found.","code":"IM013"}}}}}}}}},"/admin/sdk/apps/{app}/{version}/app-review/approve":{"post":{"tags":["Admin / SDK Apps / Review"],"x-private":true,"summary":"Approve a submission (reviewer)","description":"Records Make's approval of the submission currently in review: `review` (a first review or a re-review of one) and `update_review` (an update, or its re-review) both move to `approved`. The event appended is `approved` for a first review and `update_approved` for an update, with the optional `note` attached. Accepted in both review steps (`auto` and `manual`). Fails with `409` in any other phase.\nThis records the **review outcome only** — it does not publish the app. Listing the app on the Marketplace (compiling it and setting the `approved` flag) is still done through the legacy `POST /admin/sdk/apps/{app}/{version}/approve` endpoint.\nRequires an administrator with the `apps approve` permission (the same one the legacy approval needs). Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["admin:write","sdk-apps:write"]}],"parameters":[{"name":"app","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-crm-app"},{"name":"version","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"note":{"type":"string","minLength":1,"maxLength":10000,"description":"Optional reviewer's note, stored on the timeline event the developer sees."}}},"examples":{"with-note":{"summary":"Approval with a note","value":{"note":"All test scenarios pass, nice error handling."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","description":"State of the new SDK app review flow for one app version. The lifecycle phase either comes from the new flow's own storage or, while the new flow has never touched the app (`derivedFromLegacy: true`), is derived from the legacy review state (`approved`/`in_review` flags and the legacy review status). Every lifecycle step is traced to Trackman with the legacy event closest to it: the submission that requests the review as `apps_review_requested`, every other step (including the reviewer's) as `apps_review_form_updated`, whose `review_form.event` is the timeline event the step appended. Auto-saving the draft (`PUT …/app-review/form`) is not a step and is not traced.","properties":{"appName":{"type":"string","description":"Name of the SDK app."},"appVersion":{"type":"integer","description":"Major version of the SDK app."},"phase":{"type":"string","enum":["dormant","preparing","review","changes_required","approved","updating","update_review","changes_required_update","rereview"],"description":"Lifecycle phase of the review. `dormant` → `start` → `preparing` → `submit` → `review`; a reviewer then approves (`approved`) or requests changes (`changes_required`, reopened with `start-rereview` → `rereview` → `submit` back to `review`). An approved listing is updated through `start-update` → `updating` → `submit` → `update_review`, whose outcomes are `approved` or `changes_required_update` (re-reviewed through `rereview` back to `update_review`). `cancel` steps back one phase on every track."},"reviewStep":{"type":"string","enum":["auto","manual"],"nullable":true,"description":"Sub-step while `phase` is `review`/`update_review` — `manual` means the submission waits with Make (where every submission starts), `auto` means Make sent the automatic-review notes and waits on the developer to implement and confirm them. `null` in every other phase."},"rereviewOrigin":{"type":"string","enum":["changes_required","changes_required_update"],"nullable":true,"description":"While `phase` is `rereview`, the phase the re-review was started from. `null` otherwise."},"derivedFromLegacy":{"type":"boolean","description":"`true` when `phase` was derived from legacy review state instead of stored new-flow state."},"draftForm":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"submittedForm":{"nullable":true,"allOf":[{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}}],"description":"Snapshot of `draftForm` taken at the last submit. Later draft edits do not change it."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last submit."},"events":{"type":"array","description":"Review history timeline, oldest first.","items":{"type":"object","properties":{"type":{"type":"string","description":"Event type. Developer-side (`actor: developer`): `preparation_started`, `submitted`, `cancelled`, `submission_withdrawn`, `auto_notes_confirmed`, `rereview_started`, `rereview_cancelled`, `resubmitted`, `update_started`, `update_submitted`, `update_withdrawn`, `update_cancelled`. Make-side (`actor: make`, with an optional `note`): `auto_notes_sent`, `approved`, `changes_requested`, `update_approved`, `update_changes_requested`."},"actor":{"type":"string","enum":["developer","make"],"description":"Which side of the review produced the event."},"note":{"type":"string","description":"Optional free-text detail (e.g. the reviewer's request). Omitted when empty."},"createdAt":{"type":"string","format":"date-time","description":"When the event happened."}}}},"updatedAt":{"type":"string","format":"date-time","nullable":true,"description":"Last modification of the new-flow state. `null` while no new-flow row exists."}}}}},"examples":{"with-note":{"summary":"First review approved","value":{"review":{"appName":"my-crm-app","appVersion":1,"phase":"approved","reviewStep":null,"rereviewOrigin":null,"derivedFromLegacy":false,"draftForm":{"vendorRelationship":"direct","apiDocsUrl":"https://developers.example.com"},"submittedForm":{"vendorRelationship":"direct","apiDocsUrl":"https://developers.example.com"},"submittedAt":"2026-08-24T10:20:00.000Z","events":[{"type":"preparation_started","actor":"developer","createdAt":"2026-08-24T10:00:00.000Z"},{"type":"submitted","actor":"developer","createdAt":"2026-08-24T10:20:00.000Z"},{"type":"auto_notes_confirmed","actor":"developer","createdAt":"2026-08-24T11:00:00.000Z"},{"type":"approved","actor":"make","note":"All test scenarios pass, nice error handling.","createdAt":"2026-08-25T09:00:00.000Z"}],"updatedAt":"2026-08-25T09:00:00.000Z"}}}}}}},"403":{"description":"The caller is not an administrator with the `apps approve` permission.","content":{"application/json":{"schema":{"type":"object"},"examples":{"forbidden":{"summary":"Insufficient rights","value":{"message":"Insufficient rights.","detail":"Access denied.","code":"IM002"}}}}}},"409":{"description":"Nothing is in review.","content":{"application/json":{"schema":{"type":"object"},"examples":{"not-in-review":{"summary":"The developer has not submitted yet","value":{"message":"Conflict.","detail":"Action \"approve\" is not allowed while the review is \"preparing\".","code":"SC409"}}}}}}}}},"/admin/sdk/apps/{app}/{version}/app-review/request-changes":{"post":{"tags":["Admin / SDK Apps / Review"],"x-private":true,"summary":"Request changes to a submission (reviewer)","description":"Returns the submission currently in review to the developer with a mandatory `note`: `review` moves to `changes_required` (event `changes_requested`), `update_review` moves to `changes_required_update` (event `update_changes_requested`). The developer then starts a re-review (`POST .../app-review/start-rereview`), which reopens the form and resubmits onto the same track. Accepted in both review steps (`auto` and `manual`). Fails with `409` in any other phase and with `400` when the note is missing or empty.\nRequires an administrator with the `apps edit` permission (the same one the legacy reviewer status form needs). Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["admin:write","sdk-apps:write"]}],"parameters":[{"name":"app","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-crm-app"},{"name":"version","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["note"],"properties":{"note":{"type":"string","minLength":1,"maxLength":10000,"description":"What the developer has to change, stored on the timeline event they see."}}},"examples":{"returned":{"summary":"Feedback for the developer","value":{"note":"Fix error handling in List Deals and resubmit."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","description":"State of the new SDK app review flow for one app version. The lifecycle phase either comes from the new flow's own storage or, while the new flow has never touched the app (`derivedFromLegacy: true`), is derived from the legacy review state (`approved`/`in_review` flags and the legacy review status). Every lifecycle step is traced to Trackman with the legacy event closest to it: the submission that requests the review as `apps_review_requested`, every other step (including the reviewer's) as `apps_review_form_updated`, whose `review_form.event` is the timeline event the step appended. Auto-saving the draft (`PUT …/app-review/form`) is not a step and is not traced.","properties":{"appName":{"type":"string","description":"Name of the SDK app."},"appVersion":{"type":"integer","description":"Major version of the SDK app."},"phase":{"type":"string","enum":["dormant","preparing","review","changes_required","approved","updating","update_review","changes_required_update","rereview"],"description":"Lifecycle phase of the review. `dormant` → `start` → `preparing` → `submit` → `review`; a reviewer then approves (`approved`) or requests changes (`changes_required`, reopened with `start-rereview` → `rereview` → `submit` back to `review`). An approved listing is updated through `start-update` → `updating` → `submit` → `update_review`, whose outcomes are `approved` or `changes_required_update` (re-reviewed through `rereview` back to `update_review`). `cancel` steps back one phase on every track."},"reviewStep":{"type":"string","enum":["auto","manual"],"nullable":true,"description":"Sub-step while `phase` is `review`/`update_review` — `manual` means the submission waits with Make (where every submission starts), `auto` means Make sent the automatic-review notes and waits on the developer to implement and confirm them. `null` in every other phase."},"rereviewOrigin":{"type":"string","enum":["changes_required","changes_required_update"],"nullable":true,"description":"While `phase` is `rereview`, the phase the re-review was started from. `null` otherwise."},"derivedFromLegacy":{"type":"boolean","description":"`true` when `phase` was derived from legacy review state instead of stored new-flow state."},"draftForm":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"submittedForm":{"nullable":true,"allOf":[{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}}],"description":"Snapshot of `draftForm` taken at the last submit. Later draft edits do not change it."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last submit."},"events":{"type":"array","description":"Review history timeline, oldest first.","items":{"type":"object","properties":{"type":{"type":"string","description":"Event type. Developer-side (`actor: developer`): `preparation_started`, `submitted`, `cancelled`, `submission_withdrawn`, `auto_notes_confirmed`, `rereview_started`, `rereview_cancelled`, `resubmitted`, `update_started`, `update_submitted`, `update_withdrawn`, `update_cancelled`. Make-side (`actor: make`, with an optional `note`): `auto_notes_sent`, `approved`, `changes_requested`, `update_approved`, `update_changes_requested`."},"actor":{"type":"string","enum":["developer","make"],"description":"Which side of the review produced the event."},"note":{"type":"string","description":"Optional free-text detail (e.g. the reviewer's request). Omitted when empty."},"createdAt":{"type":"string","format":"date-time","description":"When the event happened."}}}},"updatedAt":{"type":"string","format":"date-time","nullable":true,"description":"Last modification of the new-flow state. `null` while no new-flow row exists."}}}}},"examples":{"returned":{"summary":"First review returned to the developer","value":{"review":{"appName":"my-crm-app","appVersion":1,"phase":"changes_required","reviewStep":null,"rereviewOrigin":null,"derivedFromLegacy":false,"draftForm":{"vendorRelationship":"direct","apiDocsUrl":"https://developers.example.com"},"submittedForm":{"vendorRelationship":"direct","apiDocsUrl":"https://developers.example.com"},"submittedAt":"2026-08-24T10:20:00.000Z","events":[{"type":"preparation_started","actor":"developer","createdAt":"2026-08-24T10:00:00.000Z"},{"type":"submitted","actor":"developer","createdAt":"2026-08-24T10:20:00.000Z"},{"type":"changes_requested","actor":"make","note":"Fix error handling in List Deals and resubmit.","createdAt":"2026-08-25T09:00:00.000Z"}],"updatedAt":"2026-08-25T09:00:00.000Z"}}}}}}},"400":{"description":"The note is missing or empty.","content":{"application/json":{"schema":{"type":"object"},"examples":{"missing-note":{"summary":"No note given","value":{"message":"Bad Request.","detail":"Expected required property","code":"SC400"}}}}}},"403":{"description":"The caller is not an administrator with the `apps edit` permission.","content":{"application/json":{"schema":{"type":"object"},"examples":{"forbidden":{"summary":"Insufficient rights","value":{"message":"Insufficient rights.","detail":"Access denied.","code":"IM002"}}}}}},"409":{"description":"Nothing is in review.","content":{"application/json":{"schema":{"type":"object"},"examples":{"not-in-review":{"summary":"The submission was already returned","value":{"message":"Conflict.","detail":"Action \"requestChanges\" is not allowed while the review is \"changes_required\".","code":"SC409"}}}}}}}}},"/admin/sdk/apps/{app}/{version}/app-review/send-auto-notes":{"post":{"tags":["Admin / SDK Apps / Review"],"x-private":true,"summary":"Send the automatic-review notes (reviewer)","description":"Hands the automatic-review notes of the submission waiting with Make to the developer: while the phase is `review` or `update_review` with `reviewStep: manual`, the step moves to `auto` and an `auto_notes_sent` event is appended, carrying the optional `note`. The developer then implements the notes and confirms them (`POST /sdk/apps/{SDK_appName}/{SDK_appVersion}/app-review/confirm-auto-notes`), which hands the submission back (`manual`). The phase itself does not change, and the outcomes (`approve`, `request-changes`) stay available in both steps. Fails with `409` while notes are already waiting for the developer (`reviewStep: auto`) and in any other phase.\nThis only records that the notes were sent — the notes themselves reach the developer by email from Make's app review process, or as the `note`.\nRequires an administrator with the `apps edit` permission (the same one the legacy reviewer status form needs). Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["admin:write","sdk-apps:write"]}],"parameters":[{"name":"app","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-crm-app"},{"name":"version","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"note":{"type":"string","minLength":1,"maxLength":10000,"description":"Optional notes for the developer, stored on the timeline event the developer sees."}}},"examples":{"with-note":{"summary":"Notes sent with a summary","value":{"note":"The List deals module ignores the API's pagination."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","description":"State of the new SDK app review flow for one app version. The lifecycle phase either comes from the new flow's own storage or, while the new flow has never touched the app (`derivedFromLegacy: true`), is derived from the legacy review state (`approved`/`in_review` flags and the legacy review status). Every lifecycle step is traced to Trackman with the legacy event closest to it: the submission that requests the review as `apps_review_requested`, every other step (including the reviewer's) as `apps_review_form_updated`, whose `review_form.event` is the timeline event the step appended. Auto-saving the draft (`PUT …/app-review/form`) is not a step and is not traced.","properties":{"appName":{"type":"string","description":"Name of the SDK app."},"appVersion":{"type":"integer","description":"Major version of the SDK app."},"phase":{"type":"string","enum":["dormant","preparing","review","changes_required","approved","updating","update_review","changes_required_update","rereview"],"description":"Lifecycle phase of the review. `dormant` → `start` → `preparing` → `submit` → `review`; a reviewer then approves (`approved`) or requests changes (`changes_required`, reopened with `start-rereview` → `rereview` → `submit` back to `review`). An approved listing is updated through `start-update` → `updating` → `submit` → `update_review`, whose outcomes are `approved` or `changes_required_update` (re-reviewed through `rereview` back to `update_review`). `cancel` steps back one phase on every track."},"reviewStep":{"type":"string","enum":["auto","manual"],"nullable":true,"description":"Sub-step while `phase` is `review`/`update_review` — `manual` means the submission waits with Make (where every submission starts), `auto` means Make sent the automatic-review notes and waits on the developer to implement and confirm them. `null` in every other phase."},"rereviewOrigin":{"type":"string","enum":["changes_required","changes_required_update"],"nullable":true,"description":"While `phase` is `rereview`, the phase the re-review was started from. `null` otherwise."},"derivedFromLegacy":{"type":"boolean","description":"`true` when `phase` was derived from legacy review state instead of stored new-flow state."},"draftForm":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"submittedForm":{"nullable":true,"allOf":[{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}}],"description":"Snapshot of `draftForm` taken at the last submit. Later draft edits do not change it."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last submit."},"events":{"type":"array","description":"Review history timeline, oldest first.","items":{"type":"object","properties":{"type":{"type":"string","description":"Event type. Developer-side (`actor: developer`): `preparation_started`, `submitted`, `cancelled`, `submission_withdrawn`, `auto_notes_confirmed`, `rereview_started`, `rereview_cancelled`, `resubmitted`, `update_started`, `update_submitted`, `update_withdrawn`, `update_cancelled`. Make-side (`actor: make`, with an optional `note`): `auto_notes_sent`, `approved`, `changes_requested`, `update_approved`, `update_changes_requested`."},"actor":{"type":"string","enum":["developer","make"],"description":"Which side of the review produced the event."},"note":{"type":"string","description":"Optional free-text detail (e.g. the reviewer's request). Omitted when empty."},"createdAt":{"type":"string","format":"date-time","description":"When the event happened."}}}},"updatedAt":{"type":"string","format":"date-time","nullable":true,"description":"Last modification of the new-flow state. `null` while no new-flow row exists."}}}}},"examples":{"with-note":{"summary":"Notes waiting for the developer","value":{"review":{"appName":"my-crm-app","appVersion":1,"phase":"review","reviewStep":"auto","rereviewOrigin":null,"derivedFromLegacy":false,"draftForm":{"vendorRelationship":"direct","apiDocsUrl":"https://developers.example.com"},"submittedForm":{"vendorRelationship":"direct","apiDocsUrl":"https://developers.example.com"},"submittedAt":"2026-08-24T10:20:00.000Z","events":[{"type":"preparation_started","actor":"developer","createdAt":"2026-08-24T10:00:00.000Z"},{"type":"submitted","actor":"developer","createdAt":"2026-08-24T10:20:00.000Z"},{"type":"auto_notes_sent","actor":"make","note":"The List deals module ignores the API's pagination.","createdAt":"2026-08-24T10:40:00.000Z"}],"updatedAt":"2026-08-24T10:40:00.000Z"}}}}}}},"403":{"description":"The caller is not an administrator with the `apps edit` permission.","content":{"application/json":{"schema":{"type":"object"},"examples":{"forbidden":{"summary":"Insufficient rights","value":{"message":"Insufficient rights.","detail":"Access denied.","code":"IM002"}}}}}},"409":{"description":"Notes are already waiting for the developer, or nothing is in review.","content":{"application/json":{"schema":{"type":"object"},"examples":{"already-waiting":{"summary":"The developer has not confirmed the last notes yet","value":{"message":"Conflict.","detail":"The automatic-review notes are already waiting for the developer to confirm them.","code":"SC409"}},"not-in-review":{"summary":"The developer has not submitted yet","value":{"message":"Conflict.","detail":"Action \"sendAutoNotes\" is not allowed while the review is \"preparing\".","code":"SC409"}}}}}}}}},"/admin/sdk/apps/{app}/connections/{connection}/rename":{"post":{"x-private":true,"tags":["Admin / SDK Apps / Connections"],"summary":"Rename Connection","description":"Renames a connection of a custom SDK app. The new `name` must be a kebab-case slug and must be globally unique across all connections. Only private or published apps can be renamed; approved (public) apps are not eligible.\n","security":[{"token":["admin:write","sdk-apps:write"]}],"parameters":[{"name":"app","in":"path","description":"The SDK app name.","schema":{"type":"string"},"required":true,"example":"my-custom-app"},{"name":"connection","in":"path","description":"The current connection name (slug).","schema":{"type":"string"},"required":true,"example":"my-custom-app-1"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"The new connection name as a kebab-case slug. Must be globally unique across all connections.","pattern":"^[a-z][0-9a-z-]+[0-9a-z]$","minLength":3,"maxLength":32}}},"example":{"name":"my-custom-app-renamed"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appConnection":{"type":"object","properties":{"name":{"type":"string","description":"The new connection name."}}}}},"examples":{"rename-connection":{"summary":"Rename Connection","value":{"appConnection":{"name":"my-custom-app-renamed"}}}}}}},"400":{"description":"Invalid input — either the new `name` is invalid or already used by another connection within the app, or the app is approved (public) and therefore not eligible for connection renaming.\n","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Application error code."},"message":{"type":"string","description":"Error message."},"detail":{"type":"array","description":"Validation error details.","items":{"type":"string"}}}},"examples":{"approved-app":{"summary":"App is approved and cannot have its connections renamed","value":{"code":"IM005","message":"You can only rename connections of non-approved apps."}},"name-already-used":{"summary":"New connection name is already used by another connection globally","value":{"code":"IM005","message":"A connection with the same name already exists."}},"invalid-name":{"summary":"Invalid `name` value","value":{"code":"SC400","message":"Invalid input parameters","detail":["Validation failed for 1 parameter(s).","Parameter `name` must match pattern ^[a-z][0-9a-z-]+[0-9a-z]$."]}}}}}},"403":{"description":"The caller does not have permission to perform the action.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"example":{"code":"SC403","message":"Forbidden"}}}},"404":{"description":"The app or connection does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"example":{"code":"SC404","message":"Connection not found."}}}}}}},"/admin/sdk/apps/{app}/webhooks/{webhook}/rename":{"post":{"x-private":true,"tags":["Admin / SDK Apps / Webhooks"],"summary":"Rename Webhook","description":"Renames a webhook of a custom SDK app. The new `name` must be a kebab-case slug and must be globally unique across all webhooks. Only private or published apps can be renamed; approved (public) apps are not eligible.\n","security":[{"token":["admin:write","sdk-apps:write"]}],"parameters":[{"name":"app","in":"path","description":"The SDK app name.","schema":{"type":"string"},"required":true,"example":"my-custom-app"},{"name":"webhook","in":"path","description":"The current webhook name (slug).","schema":{"type":"string"},"required":true,"example":"my-custom-app-webhook-1"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"The new webhook name as a kebab-case slug. Must be globally unique across all webhooks.","pattern":"^[a-z][0-9a-z-]+[0-9a-z]$","minLength":3,"maxLength":32}}},"example":{"name":"my-custom-app-webhook-renamed"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appWebhook":{"type":"object","properties":{"name":{"type":"string","description":"The new webhook name."}}}}},"examples":{"rename-webhook":{"summary":"Rename Webhook","value":{"appWebhook":{"name":"my-custom-app-webhook-renamed"}}}}}}},"400":{"description":"Invalid input — either the new `name` is invalid or already used by another webhook globally, or the app is approved (public) and therefore not eligible for webhook renaming.\n","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Application error code."},"message":{"type":"string","description":"Error message."},"detail":{"type":"array","description":"Validation error details.","items":{"type":"string"}}}},"examples":{"approved-app":{"summary":"App is approved and cannot have its webhooks renamed","value":{"code":"IM005","message":"You can only rename webhooks of non-approved apps."}},"name-already-used":{"summary":"New webhook name is already used by another webhook globally","value":{"code":"IM005","message":"A webhook with the same name already exists."}},"invalid-name":{"summary":"Invalid `name` value","value":{"code":"SC400","message":"Invalid input parameters","detail":["Validation failed for 1 parameter(s).","Parameter `name` must match pattern ^[a-z][0-9a-z-]+[0-9a-z]$."]}}}}}},"403":{"description":"The caller does not have permission to perform the action.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"example":{"code":"SC403","message":"Forbidden"}}}},"404":{"description":"The app or webhook does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"examples":{"webhook-not-found":{"summary":"Webhook does not exist","value":{"code":"IM611","message":"Webhook not found."}},"app-not-found":{"summary":"App does not exist","value":{"code":"IM601","message":"App not found."}}}}}}}}},"/admin/sdk/apps/{app}/{version}/publisher":{"patch":{"tags":["Admin / SDK Apps / Publisher"],"x-private":true,"summary":"Set the app author's partner program and company name","description":"Sets what Make manages on the profile of the app's author — the Make partner program (`technology`, `solution`, or `null` for \"not a partner\") and the company name — and answers with the author's profile the way `GET /sdk/apps/{app}/{version}/publisher` does. The program decides which variant of the new review form the developer sees (the verified-partner card instead of the \"Learn about the partner program\" call to action); a partner sees their company name and logo read-only, so Make sets them here and through `PUT /admin/sdk/apps/{app}/{version}/publisher/logo`. Only Make administrators holding the `apps edit` permission may call it; the developer's own `PATCH /sdk/publisher` has no `partnerType` field and this route exists under `/admin` only. Send at least one field: an omitted field keeps its value and `null` clears it. Writing a value for a developer who never saved a profile creates the profile with just that value; a body that only clears values changes nothing for such a developer (`publisher` stays `null`). Other profile fields are ignored — the author name and the contact email stay the developer's own. Responds `403` (IM002) without the permission (checked before the app is looked up) and `404` (IM013) when the app version does not exist. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["admin:write","sdk-apps:write"]}],"parameters":[{"name":"app","in":"path","description":"The SDK app name.","schema":{"type":"string"},"required":true,"example":"my-crm-app"},{"name":"version","in":"path","description":"Major version of the SDK app.","schema":{"type":"integer"},"required":true,"example":1}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"partnerType":{"type":"string","enum":["technology","solution"],"nullable":true,"description":"The partner program to assign; `null` marks the author as not a partner."},"companyName":{"type":"string","maxLength":255,"nullable":true,"description":"The company name the author's apps are published under — what a partner sees, read-only, on the verified-partner card. `null` clears it."}}},"examples":{"technology-partner":{"summary":"Mark the author as a Technology Partner","value":{"partnerType":"technology"}},"first-setup":{"summary":"Set up a new partner — program and company name at once","value":{"partnerType":"solution","companyName":"Acme Automations s.r.o."}},"not-a-partner":{"summary":"Remove the author from the partner programs","value":{"partnerType":null}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"publisher":{"nullable":true,"allOf":[{"type":"object","description":"Account-level publisher profile of an SDK app developer (\"App developer contact\"). One profile per user; its values appear on the landing pages of all apps the user publishes.","properties":{"userId":{"type":"integer","description":"Owning user."},"authorName":{"type":"string","nullable":true,"description":"Author name shown as the publisher (non-partner variant)."},"contactEmail":{"type":"string","format":"email","nullable":true,"description":"Developer contact email. `null` means the account email is used."},"companyName":{"type":"string","nullable":true,"description":"Company (ISV) name shown as the publisher. For a Make partner it is the name their apps are published under, which the partner cannot change themselves — Make administrators set it through `PATCH /admin/sdk/apps/{app}/{version}/publisher`."},"partnerType":{"type":"string","enum":["technology","solution"],"nullable":true,"description":"Make partner program of the publisher; `null` means not a partner (the default). Assigned by Make administrators only, through `PATCH /admin/sdk/apps/{app}/{version}/publisher` — the developer's own `PATCH /sdk/publisher` cannot change it."},"hasLogo":{"type":"boolean","description":"Whether a company logo is stored (served by `GET /sdk/publisher/logo`). Make administrators set a partner's logo through `PUT /admin/sdk/apps/{app}/{version}/publisher/logo`."},"logoFilename":{"type":"string","nullable":true,"description":"Original filename of the uploaded logo."},"createdAt":{"type":"string","format":"date-time","description":"When the profile was created."},"updatedAt":{"type":"string","format":"date-time","description":"When the profile was last updated."}}}]},"authorEmail":{"type":"string","format":"email","description":"Account email of the app's author."}}},"examples":{"technology-partner":{"summary":"Profile after the assignment","value":{"publisher":{"userId":42,"authorName":"Jane Developer","contactEmail":null,"companyName":"Acme Automations s.r.o.","partnerType":"technology","hasLogo":false,"logoFilename":null,"createdAt":"2026-08-20T09:00:00.000Z","updatedAt":"2026-10-07T10:00:00.000Z"},"authorEmail":"jane@example.com"}},"first-setup":{"summary":"A developer without a profile, set up as a partner","value":{"publisher":{"userId":42,"authorName":null,"contactEmail":null,"companyName":"Acme Automations s.r.o.","partnerType":"solution","hasLogo":false,"logoFilename":null,"createdAt":"2026-10-13T10:00:00.000Z","updatedAt":"2026-10-13T10:00:00.000Z"},"authorEmail":"jane@example.com"}},"not-a-partner":{"summary":"The author never saved a profile, so clearing created nothing","value":{"publisher":null,"authorEmail":"jane@example.com"}}}}}},"400":{"description":"The body sets neither `partnerType` nor `companyName`, `partnerType` is not one of `technology`, `solution`, `null`, or `companyName` is longer than 255 characters. The per-field validation failures are listed in `suberrors`.","content":{"application/json":{"schema":{"type":"object"},"examples":{"unknown-program":{"summary":"Unsupported program name","value":{"message":"Bad Request","code":"SC400"}}}}}},"403":{"description":"The caller is not an administrator holding the `apps edit` permission.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"example":{"code":"IM002","message":"Insufficient rights"}}}},"404":{"description":"The app version does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"}}},"examples":{"app-not-found":{"summary":"Unknown app or version","value":{"code":"IM013","message":"Entity not found","detail":"SDK app not found."}}}}}}}}},"/admin/sdk/apps/{app}/{version}/publisher/logo":{"get":{"tags":["Admin / SDK Apps / Publisher"],"x-private":true,"summary":"Get the app author's logo","description":"Serves the company logo stored on the profile of the app's author as a PNG image, or `404` with the message `Logo not found` when the author has none; the developer's own logo route is `GET /sdk/publisher/logo`. The `apps_review_*` Trackman traces link here from `review_form.publisher.logo_url` (`https://{zone}/api/v2/admin/sdk/apps/{app}/{version}/publisher/logo`), so Make's app review process can download the logo with an administrator's API token. It serves the logo stored at the time of the request, which differs from the one sent with the review once the developer replaces it. Only Make administrators holding the `apps get` permission may call it: responds `403` (IM002) without the permission (checked before the app is looked up) and `404` (IM013) when the app version does not exist. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["admin:read","sdk-apps:read"]}],"parameters":[{"name":"app","in":"path","description":"The SDK app name.","schema":{"type":"string"},"required":true,"example":"my-crm-app"},{"name":"version","in":"path","description":"Major version of the SDK app.","schema":{"type":"integer"},"required":true,"example":1}],"responses":{"200":{"description":"The logo stored on the profile of the app's author.","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"403":{"description":"The caller is not an administrator holding the `apps get` permission.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"example":{"code":"IM002","message":"Insufficient rights"}}}},"404":{"description":"The app version does not exist, or its author has no logo stored.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"}}},"examples":{"no-logo":{"summary":"The author has no logo stored","value":{"message":"Logo not found"}},"app-not-found":{"summary":"Unknown app or version","value":{"code":"IM013","message":"Entity not found","detail":"SDK app not found."}}}}}}}},"put":{"tags":["Admin / SDK Apps / Publisher"],"x-private":true,"summary":"Upload the app author's logo","description":"Stores the company logo on the profile of the app's author, creating the profile when the developer never saved one, and answers with the author's profile the way `GET /sdk/apps/{app}/{version}/publisher` does. A Make partner sees their logo read-only on the verified-partner card, so Make administrators holding the `apps edit` permission set it here; the developer's own logo routes are `/sdk/publisher/logo`. The logo has the same requirements as there: the raw request body with content type `image/png`, a square PNG between 512×512 and 2048×2048 pixels, at most 500 kB. A missing or non-binary body responds with `400` (IM005), an invalid or non-square PNG with `400` (SC400), a file over 500 kB with `413`. Responds `403` (IM002) without the permission (checked before the app is looked up) and `404` (IM013) when the app version does not exist. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["admin:write","sdk-apps:write"]}],"parameters":[{"name":"app","in":"path","description":"The SDK app name.","schema":{"type":"string"},"required":true,"example":"my-crm-app"},{"name":"version","in":"path","description":"Major version of the SDK app.","schema":{"type":"integer"},"required":true,"example":1},{"name":"filename","in":"query","schema":{"type":"string","minLength":1,"maxLength":255},"required":false,"description":"Original filename of the uploaded logo, shown back in the UI.","example":"acme-logo.png"}],"requestBody":{"required":true,"content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"publisher":{"type":"object","description":"Account-level publisher profile of an SDK app developer (\"App developer contact\"). One profile per user; its values appear on the landing pages of all apps the user publishes.","properties":{"userId":{"type":"integer","description":"Owning user."},"authorName":{"type":"string","nullable":true,"description":"Author name shown as the publisher (non-partner variant)."},"contactEmail":{"type":"string","format":"email","nullable":true,"description":"Developer contact email. `null` means the account email is used."},"companyName":{"type":"string","nullable":true,"description":"Company (ISV) name shown as the publisher. For a Make partner it is the name their apps are published under, which the partner cannot change themselves — Make administrators set it through `PATCH /admin/sdk/apps/{app}/{version}/publisher`."},"partnerType":{"type":"string","enum":["technology","solution"],"nullable":true,"description":"Make partner program of the publisher; `null` means not a partner (the default). Assigned by Make administrators only, through `PATCH /admin/sdk/apps/{app}/{version}/publisher` — the developer's own `PATCH /sdk/publisher` cannot change it."},"hasLogo":{"type":"boolean","description":"Whether a company logo is stored (served by `GET /sdk/publisher/logo`). Make administrators set a partner's logo through `PUT /admin/sdk/apps/{app}/{version}/publisher/logo`."},"logoFilename":{"type":"string","nullable":true,"description":"Original filename of the uploaded logo."},"createdAt":{"type":"string","format":"date-time","description":"When the profile was created."},"updatedAt":{"type":"string","format":"date-time","description":"When the profile was last updated."}}},"authorEmail":{"type":"string","format":"email","description":"Account email of the app's author."}}},"examples":{"uploaded":{"summary":"Profile after the upload","value":{"publisher":{"userId":42,"authorName":null,"contactEmail":null,"companyName":"Acme Automations s.r.o.","partnerType":"technology","hasLogo":true,"logoFilename":"acme-logo.png","createdAt":"2026-10-13T10:00:00.000Z","updatedAt":"2026-10-13T10:05:00.000Z"},"authorEmail":"jane@example.com"}}}}}},"400":{"description":"The body is missing, or is not a valid square PNG within the required dimensions.","content":{"application/json":{"schema":{"type":"object"},"examples":{"missing-body":{"summary":"No raw image/png body was sent","value":{"message":"Send the logo as a raw request body with content-type image/png.","code":"IM005"}},"invalid-png":{"summary":"Body is not a valid PNG","value":{"message":"Bad Request","code":"SC400","detail":"Failed to save image. Invalid PNG image. Icon requirements: PNG format. Square size from 512x512 to 2048x2048 is required. File size must not exceed 500 kB."}}}}}},"403":{"description":"The caller is not an administrator holding the `apps edit` permission.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"example":{"code":"IM002","message":"Insufficient rights"}}}},"404":{"description":"The app version does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"}}},"examples":{"app-not-found":{"summary":"Unknown app or version","value":{"code":"IM013","message":"Entity not found","detail":"SDK app not found."}}}}}},"413":{"description":"The logo exceeds the maximum file size.","content":{"application/json":{"schema":{"type":"object"},"examples":{"too-large":{"summary":"Logo over 500 kB","value":{"message":"Payload is too large","code":"SC413","detail":"Failed to save image. Image exceeded max file size. Icon requirements: PNG format. Square size from 512x512 to 2048x2048 is required. File size must not exceed 500 kB."}}}}}}}},"delete":{"tags":["Admin / SDK Apps / Publisher"],"x-private":true,"summary":"Delete the app author's logo","description":"Removes the company logo from the profile of the app's author and answers with the author's profile the way `GET /sdk/apps/{app}/{version}/publisher` does — unlike the developer's own `DELETE /sdk/publisher/logo`, which answers `204`. Succeeds even when no logo was stored, and in that case does not create a publisher profile (`publisher` stays `null` for a developer who never saved one). Only Make administrators holding the `apps edit` permission may call it: responds `403` (IM002) without the permission (checked before the app is looked up) and `404` (IM013) when the app version does not exist. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["admin:write","sdk-apps:write"]}],"parameters":[{"name":"app","in":"path","description":"The SDK app name.","schema":{"type":"string"},"required":true,"example":"my-crm-app"},{"name":"version","in":"path","description":"Major version of the SDK app.","schema":{"type":"integer"},"required":true,"example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"publisher":{"nullable":true,"allOf":[{"type":"object","description":"Account-level publisher profile of an SDK app developer (\"App developer contact\"). One profile per user; its values appear on the landing pages of all apps the user publishes.","properties":{"userId":{"type":"integer","description":"Owning user."},"authorName":{"type":"string","nullable":true,"description":"Author name shown as the publisher (non-partner variant)."},"contactEmail":{"type":"string","format":"email","nullable":true,"description":"Developer contact email. `null` means the account email is used."},"companyName":{"type":"string","nullable":true,"description":"Company (ISV) name shown as the publisher. For a Make partner it is the name their apps are published under, which the partner cannot change themselves — Make administrators set it through `PATCH /admin/sdk/apps/{app}/{version}/publisher`."},"partnerType":{"type":"string","enum":["technology","solution"],"nullable":true,"description":"Make partner program of the publisher; `null` means not a partner (the default). Assigned by Make administrators only, through `PATCH /admin/sdk/apps/{app}/{version}/publisher` — the developer's own `PATCH /sdk/publisher` cannot change it."},"hasLogo":{"type":"boolean","description":"Whether a company logo is stored (served by `GET /sdk/publisher/logo`). Make administrators set a partner's logo through `PUT /admin/sdk/apps/{app}/{version}/publisher/logo`."},"logoFilename":{"type":"string","nullable":true,"description":"Original filename of the uploaded logo."},"createdAt":{"type":"string","format":"date-time","description":"When the profile was created."},"updatedAt":{"type":"string","format":"date-time","description":"When the profile was last updated."}}}]},"authorEmail":{"type":"string","format":"email","description":"Account email of the app's author."}}},"examples":{"removed":{"summary":"Profile after the removal","value":{"publisher":{"userId":42,"authorName":null,"contactEmail":null,"companyName":"Acme Automations s.r.o.","partnerType":"technology","hasLogo":false,"logoFilename":null,"createdAt":"2026-10-13T10:00:00.000Z","updatedAt":"2026-10-13T10:10:00.000Z"},"authorEmail":"jane@example.com"}},"no-profile":{"summary":"The author never saved a profile, so the removal created nothing","value":{"publisher":null,"authorEmail":"jane@example.com"}}}}}},"403":{"description":"The caller is not an administrator holding the `apps edit` permission.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"example":{"code":"IM002","message":"Insufficient rights"}}}},"404":{"description":"The app version does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"}}},"examples":{"app-not-found":{"summary":"Unknown app or version","value":{"code":"IM013","message":"Entity not found","detail":"SDK app not found."}}}}}}}}},"/admin/users-detail":{"get":{"x-private":true,"tags":["Admin / Users"],"summary":"Get user's detail","description":"Retrieves a collection of all users in your Make White Label instance. Use the API call query parameters to limit the results to a user name or user email.","security":[{"token":["admin:read","user:read"]}],"parameters":[{"description":"Optional filter parameter.","name":"id","in":"query","schema":{"type":"integer"},"example":1},{"description":"Optional filter parameter.","name":"name","in":"query","schema":{"type":"string"}},{"description":"Optional filter parameter.","name":"email","in":"query","schema":{"type":"string"}},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"filtering":{"value":["id","name","email"]}}},{"name":"pg[sortBy]","in":"query","schema":{"type":"string","enum":["name","id","userAdminsRoleId"]},"description":"Sort the results in the APi call response by the values in the specified column."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"language":{"type":"string"},"timezoneId":{"type":"integer"},"localeId":{"type":"integer"},"countryId":{"type":"integer"},"features":{"type":"object","additionalProperties":{}},"avatar":{"type":"string","format":"uri"},"usersAdminsRoleId":{"type":"integer"},"tfaEnabled":{"type":"boolean"},"lastlogin":{"type":"string","format":"date-time"},"organizations":{"type":"integer"},"scenarios":{"type":"integer"},"activeScenarios":{"type":"integer"},"deleted":{"type":"boolean"},"created":{"type":"string","format":"date-time"},"suspended":{"type":"boolean","description":"Whether the user's account is suspended. Only present in slave mode (public cloud) — HQ syncs this field down; it is absent in master (private/on-prem) mode."},"suspensionReason":{"type":"string","nullable":true,"description":"Reason for the account suspension, or null when not suspended. Only present in slave mode (public cloud); absent in master (private/on-prem) mode."}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"examples":{"default":{"summary":"List users","description":"Retrieve all available data about all users in the Make White Label instance.","value":{"users":[{"id":15,"name":"Rosario","email":"dawson@test.net","language":"en","timezoneId":113,"localeId":19,"countryId":1,"features":{},"avatar":"https://secure.gravatar.com/avatar/bca593a1166cfebb7453226d5a55f4a5.jpg?d=mm","lastLogin":"2023-01-03T11:24:25.460Z","organizations":1,"scenarios":0,"activeScenarios":0,"deleted":false,"created":"2023-01-03T11:12:40.644Z","usersAdminsRoleId":null,"tfaEnabled":false,"suspended":false,"suspensionReason":null},{"id":14,"name":"John Doe","email":"john@doe.com","language":"en","timezoneId":113,"localeId":19,"countryId":202,"features":{},"avatar":"https://secure.gravatar.com/avatar/049bebcb7ed96e1539a5ed479ae7158b.jpg?d=mm","lastLogin":null,"organizations":0,"scenarios":0,"activeScenarios":0,"deleted":false,"created":"2022-12-12T14:24:26.895Z","usersAdminsRoleId":null,"tfaEnabled":false}],"pg":{"sortBy":"id","limit":10,"sortDir":"desc","offset":0}}},"filtering":{"summary":"Filter results","description":"Filter API call response for specific data.","value":{"users":[{"id":14,"name":"John Doe","email":"john@doe.com"}],"pg":{"sortBy":"id","limit":10,"sortDir":"desc","offset":0}}}}}}}}}},"/admin/users":{"get":{"x-private":true,"tags":["Admin / Users"],"summary":"List users","description":"Gets the list of users in a team or an organization.","security":[{"token":["admin:read","user:read"]}],"parameters":[{"name":"organizationId","in":"query","schema":{"type":"integer"},"description":"The ID of the organization.","examples":{"filtering":{"value":22}}},{"name":"teamId","in":"query","schema":{"type":"integer"},"description":"The ID of the team.","examples":{"filtering":{"value":11}}},{"name":"name","in":"query","schema":{"type":"string"},"description":"The name of the user.","examples":{"filtering":{"value":"John Doe"}}},{"name":"email","in":"query","schema":{"type":"string"},"description":"The email of the user.","examples":{"filtering":{"value":"john@doe.com"}}},{"name":"teamRoleId","in":"query","schema":{"type":"integer"},"description":"The ID of the user's role in the team.","examples":{"filtering":{"value":3}}},{"name":"organizationRoleId","in":"query","schema":{"type":"integer"},"description":"The ID of the user's role in the organization.","examples":{"filtering":{"value":13}}},{"name":"tfaStatus","description":"The user's two-factor authentication (TFA) status. This field is available only on plans that have the TFA enforcement enabled.","in":"query","schema":{"type":"integer","enum":[0,1,2]},"examples":{"filtering":{"value":1}}},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"filtering":{"value":["id","name","email","teamRoleId","organizationRoleId","tfaStatus"]}}},{"name":"pg[sortBy]","in":"query","schema":{"type":"string","enum":["name","id","email","userAdminsRoleId"]},"description":"Sort the results in the APi call response by the values in the specified column."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"language":{"type":"string"},"timezoneId":{"type":"integer"},"localeId":{"type":"integer"},"countryId":{"type":"integer"},"features":{"type":"object","additionalProperties":{}},"avatar":{"type":"string","format":"uri"},"usersAdminsRoleId":{"type":"integer"},"lastlogin":{"type":"string","format":"date-time"},"deleted":{"type":"boolean"},"created":{"type":"string","format":"date-time"},"tfaStatus":{"type":"integer","enum":[0,1,2]}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"examples":{"default":{"summary":"List users","description":"Retrieves a collection of all users for a team or an organization with a given ID.","value":{"users":[{"id":15,"name":"Rosario","email":"dawson@test.net","language":"en","timezoneId":113,"localeId":19,"countryId":1,"features":{},"avatar":"https://secure.gravatar.com/avatar/bca593a1166cfebb7453226d5a55f4a5.jpg?d=mm","lastLogin":"2023-01-03T11:24:25.460Z","deleted":false,"created":"2023-01-03T11:12:40.644Z","usersAdminsRoleId":null,"tfaStatus":0},{"id":14,"name":"John Doe","email":"john@doe.com","language":"en","timezoneId":113,"localeId":19,"countryId":202,"features":{},"avatar":"https://secure.gravatar.com/avatar/049bebcb7ed96e1539a5ed479ae7158b.jpg?d=mm","lastLogin":null,"deleted":false,"created":"2022-12-12T14:24:26.895Z","usersAdminsRoleId":null,"tfaStatus":1}],"pg":{"sortBy":"id","limit":10,"sortDir":"desc","offset":0}}},"filtering":{"summary":"Filter results","description":"Filter API call response for specific data.","value":{"users":[{"id":14,"name":"John Doe","email":"john@doe.com"}],"pg":{"sortBy":"id","limit":10,"sortDir":"desc","offset":0}}}}}}}}},"post":{"x-private":true,"tags":["Admin / Users"],"summary":"Create a new user","description":"Creates a new user. Specify the user's `name` and `email` in the request body.\n\nYou have to either send an invitation mail to the user with the `sendEmail: true` or you have to specify the user password in the `password` field in the request body. If you send the invitation mail, the mail contains automatically generated password. The user has to change their password right after logging in.\n\nYou can also set the user's country, locale and timezone with the request body parameters. If you don't specify the user's country, locale or timezone Make uses your account's country, locale or timezone.","security":[{"token":["admin:write","user:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the user."},"email":{"type":"string","description":"The user's email."},"password":{"type":"string","description":"The password to the user's account. It has to contain at least 10 characters, including one number, one upper case character and one special character."},"sendEmail":{"type":"boolean","description":"If set to `true`, Make sends an email to the user with their automatically generated password. The user has to change their password right after logging in."},"countryId":{"type":"integer","description":"The ID of user's country. Get the `countryId` values with the API call `GET /enums/countries`."},"timezoneId":{"type":"integer","description":"The ID of user's timezone. Get the list of the timezone IDs with the API call `GET /enums/timezones`."},"localeId":{"type":"integer","description":"The ID of user's locale. Get the list of locale IDs with the API call `GET /enums/locales`."}},"required":["name","email"]},"examples":{"setAll":{"summary":"Create user","description":"Creates new user with the specified values, including login password.","value":{"name":"John Doe","email":"john@doe.com","sendEmail":false,"timezoneId":113,"localeId":18,"countryId":1,"password":"my-Password1?"}},"sendEmail":{"summary":"Send invitation email","description":"Make sends the user an invitation mail with an automatically generated password. Right after logging in the user has to change their password.","value":{"name":"John Doe","email":"john@doe.com","sendEmail":true}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"language":{"type":"string"},"timezoneId":{"type":"integer"},"localeId":{"type":"integer"},"countryId":{"type":"integer"},"features":{"type":"object","properties":{"allow_apps":{"type":"boolean"}}},"avatar":{"type":"string","format":"uri"},"lastLogin":{"type":"string","format":"date-time"},"organizations":{"type":"integer"},"scenarios":{"type":"integer"},"activeScenarios":{"type":"integer"},"deleted":{"type":"boolean"},"created":{"type":"string","format":"date-time"},"usersAdminsRoleId":{"type":"integer"},"tfaEnabled":{"type":"boolean"},"hasAddedApp":{"type":"boolean"}}}}},"examples":{"setAll":{"value":{"user":{"id":5,"name":"John Doe","email":"john@doe.com","language":"en","timezoneId":113,"localeId":18,"countryId":1,"features":{},"avatar":"https://secure.gravatar.com/avatar/b38336ad1642bc8effb596db864be1f1.jpg?d=mm","lastLogin":null,"organizations":0,"scenarios":0,"activeScenarios":0,"deleted":false,"created":"2023-01-17T12:41:10.697Z","usersAdminsRoleId":null,"tfaEnabled":false}}},"sendEmail":{"value":{"user":{"id":5,"name":"John Doe","email":"john@doe.com","language":"en","timezoneId":53,"localeId":16,"countryId":12,"features":{},"avatar":"https://secure.gravatar.com/avatar/b38336ad1642bc8effb596db864be1f1.jpg?d=mm","lastLogin":null,"organizations":0,"scenarios":0,"activeScenarios":0,"deleted":false,"created":"2023-01-17T12:41:10.697Z","usersAdminsRoleId":null,"tfaEnabled":false}}}}}}}}}},"/admin/users/lookup":{"get":{"x-private":true,"tags":["Admin / Users"],"summary":"Lookup user by ID or email","description":"Looks up a single user by exact numeric ID or exact email match (case-insensitive). Deleted users are always included.","security":[{"token":["admin:read","user:read"]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":254},"description":"Lookup value. Use a numeric string when `type=id` or an email address when `type=email`.","examples":{"byId":{"value":"42"},"byEmail":{"value":"user@example.com"}}},{"name":"type","in":"query","required":true,"schema":{"type":"string","enum":["id","email"]},"description":"Lookup strategy for the `q` value.","example":"id"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["user"],"properties":{"user":{"type":"object","properties":{"id":{"type":"integer"},"email":{"type":"string","format":"email"},"name":{"type":"string","nullable":true},"deleted":{"type":"boolean"}},"required":["id","email","deleted"]}}},"examples":{"byId":{"summary":"Lookup by id","value":{"user":{"id":42,"email":"user@example.com","name":"Jane Doe","deleted":false}}},"byEmailDeleted":{"summary":"Lookup by email for deleted user","value":{"user":{"id":50,"email":"deleted.user@example.com","name":"Deleted User","deleted":true}}}}}}},"400":{"description":"Invalid input parameters."},"403":{"description":"Insufficient rights."},"404":{"description":"User not found."}}}},"/admin/users/{userId}":{"patch":{"x-private":true,"tags":["Admin / Users"],"summary":"Update user information","description":"Updates user information. Make updates only the specified information. \n\nIn addition, you can set the user admin roles in the `usersAdminsRoleId`. Check the available roles with the API call `GET /admin/users/admins-roles`. Refer to the [user admin roles documentation](https://www.make.com/en/help/white-label/manage-organizations#instance-level-roles-1628394) for the full breakdown of the user admin roles permissions.","security":[{"token":["admin:write","user:write"]}],"parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer"},"description":"The ID of the user.","example":22}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the user."},"email":{"type":"string","description":"The user's email."},"language":{"type":"string","description":"The language of the user's UI. Currently, Make has the full UI in english only (value `en`)."},"countryId":{"type":"integer","description":"The ID of user's country. Get the `countryId` values with the API call `GET /enums/countries`."},"timezoneId":{"type":"integer","description":"The ID of user's timezone. Get the list of the timezone IDs with the API call `GET /enums/timezones`."},"localeId":{"type":"integer","description":"The ID of user's locale. Get the list of locale IDs with the API call `GET /enums/locales`."},"usersAdminsRoleId":{"type":"integer","description":"The ID of the admin user's role. Get the list of available user admin roles and their IDs with the API call `GET /admin/users/admins-roles`.\n\nRefer to the [user admin roles documentation](https://www.make.com/en/help/white-label/manage-organizations#instance-level-roles-1628394) for the full breakdown of the user admin roles permissions."}}},"example":{"name":"Jane Porter","email":"jane.portern@jungle.com","usersAdminsRoleId":4}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"language":{"type":"string"},"timezoneId":{"type":"integer"},"localeId":{"type":"integer"},"countryId":{"type":"integer"},"features":{"type":"object","properties":{"allow_apps":{"type":"boolean"}}},"avatar":{"type":"string","format":"uri"},"lastLogin":{"type":"string","format":"date-time"},"organizations":{"type":"integer"},"scenarios":{"type":"integer"},"activeScenarios":{"type":"integer"},"deleted":{"type":"boolean"},"created":{"type":"string","format":"date-time"},"usersAdminsRoleId":{"type":"integer"},"tfaEnabled":{"type":"boolean"},"hasAddedApp":{"type":"boolean"}}}}},"example":{"user":{"id":6,"name":"Jane Porter","email":"jane.portern@jungle.com","language":"en","timezoneId":113,"localeId":18,"countryId":1,"features":{},"avatar":"https://secure.gravatar.com/avatar/b38336ad1642bc8effb596db864be1f1.jpg?d=mm","lastLogin":null,"organizations":0,"scenarios":0,"activeScenarios":0,"deleted":false,"created":"2023-01-17T12:41:10.697Z","usersAdminsRoleId":4,"tfaEnabled":false}}}}}}},"delete":{"x-private":true,"tags":["Admin / Users"],"summary":"Delete a user","description":"Deletes the user with the specified `userId`. Use the `deleteConnections` query parameter to delete the user's connections too.","security":[{"token":["admin:write","users:write"]}],"parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer"},"description":"The ID of the user.","example":22},{"name":"deleteConnections","in":"query","schema":{"type":"boolean"},"description":"Set to `true` to delete also user's connections when removing organizations, in which the user has the role \"Owner\". The default value is `false`.","example":true},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true,"description":"Set to `true` to delete organizations in which the user has the \"Owner\" role. Use the parameter `deleteConnections` to delete the user's connections in the deleted organizations."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"integer"}}},"example":{"user":22}}}}}}},"/admin/users/{userId}/anonymize-audit-logs":{"post":{"x-internal":true,"tags":["Admin / Users"],"summary":"Anonymize a deleted user's audit logs","description":"Anonymizes a deleted user's audit logs in this zone's auditman. Available on master only, which runs its own auditman and has no swarm connection to HQ — the audit logs master produces (login, registration, SSO) can only be anonymized here. HQ's endpoint of the same name covers the zones a user's organizations live in; neither covers the other's storage. Answers `{ \"ok\": 1 }` once auditman has accepted the request — auditman answers without waiting for the work, so where the anonymization stands is read from auditman rather than reported here. Requesting again is safe: auditman reuses its in-flight request for the same user instead of starting a second run.","security":[{"token":["admin:write","user:write"]}],"parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the deleted user whose audit logs are anonymized.","example":42}],"responses":{"200":{"description":"Auditman accepted the anonymization request.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}},"400":{"description":"Invalid input parameters."},"403":{"description":"Insufficient rights."},"404":{"description":"User not found, or the endpoint was called on a slave zone."},"409":{"description":"The user is not deleted, so their audit logs cannot be anonymized."},"503":{"description":"Auditman is not available in this deployment."}}}},"/admin/users/{userId}/anonymization-request":{"get":{"x-internal":true,"tags":["Admin / Users"],"summary":"Read how far a user's audit-log anonymization has got","description":"Reports the anonymization request on record for this user in this zone's auditman — the read counterpart of `POST /admin/users/{userId}/anonymize-audit-logs`. Available on master only, for the same reason as that endpoint: master runs its own auditman that HQ's per-zone fan-out cannot reach, so this is the only way to see the state of the audit logs master itself produces. A zone's state is read by HQ over the `user.auditLogsAnonymizationGet` swarm ask instead. Answers `{ \"request\": null }` for a user nobody ever asked about — that is a real state, not an error, so a caller reading several zones can tell it apart from a zone that failed to answer. A `404` here means the user does not exist at all. As with the anonymization endpoint, only a soft-deleted user qualifies; a live one is refused with `409`.","security":[{"token":["admin:read","user:read"]}],"parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":2147483647},"description":"The ID of the user whose anonymization request is read.","example":42}],"responses":{"200":{"description":"The anonymization request on record for this user, or null when nothing was ever requested in this zone.","content":{"application/json":{"schema":{"type":"object","required":["request"],"properties":{"request":{"type":"object","nullable":true,"description":"The anonymization state, or null when none was ever requested for this user.","required":["status","error"],"properties":{"status":{"type":"string","enum":["in_progress","completed","failed"]},"error":{"type":"string","nullable":true,"description":"Why the anonymization job stopped, set only on a failed request. A stalled request is failed with 'No progress since <timestamp>.', so a stuck run surfaces here."}}}}}}}},"400":{"description":"Invalid input parameters."},"403":{"description":"Insufficient rights."},"404":{"description":"User not found, or the endpoint was called on a slave zone."},"409":{"description":"The user is not soft-deleted, so they have no audit-log anonymization to report. `deleted` is the soft-delete flag; a hard-deleted user is a `404` instead."},"502":{"description":"Auditman answered with an anonymization request this service does not recognize. Reported separately from `400` because the caller's input was valid; the fault is upstream."},"503":{"description":"Auditman is not available in this deployment."}}}},"/admin/users/{userId}/user-organization-roles/{organizationId}":{"post":{"x-private":true,"tags":["Admin / Users"],"summary":"Set user organization role","description":"Sets user role in the organization. Specify the user organization role ID in the request body. Get all available user role IDs and the corresponding user role names with the API call `GET /users/roles`.\n\nIf the user is not a member of the organization, the API call adds the user to the organization with the specified role. If you add the user to the organization as \"Admin\" (`usersRoleId = 12`) and the organization has teams, Make assigns the user to the organization as the organization \"Admin\" and to all teams in the organization as \"Team Admin\". Once you add a user as \"Team Admin\" you cannot change their team role. The only option to change the \"Team Admin\" role is to remove the user from the team and re-add them with the specified team role.\n\nIf you add the user to the organization with a role other than \"Admin\" Make doesn't add the user to any organization's teams. In the Administration interface, the user appears with the role \"None\" in all teams in the organization. The users with the role \"None\" in a team or an organization cannot access the team or organization data in any way.\n\nYou cannot change the organization \"Owner\" with this endpoint. Use the API call to [transfer organization ownership](https://www.make.com/en/api-documentation/organizations-organizationId-user-organization-roles-transfer-post) instead.\n\nTo remove a user from an organization, send an empty request body. The API call removes the user with the specified `userId` from the organization, setting the user's organization role to \"None\".","security":[{"token":["admin:write","users:write"]}],"parameters":[{"name":"userId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the user","example":5},{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":22},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"all-cols":{"value":["userId","organizationId","usersRoleId","invitation","organizationTeamsCount","joinedTeamsCount","ssoPending"]}}},{"name":"deleteConnections","in":"query","schema":{"type":"boolean"},"examples":{"remove-user":{"value":true}},"description":"When removing the user from the organization, set to `true` to delete also user's connections. The default value is `false`. To confirm deleting the user's connections you have to also set the `confirmed` parameter to `true`."},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true,"description":"Set to `true` to confirm deleting the user's connections in combination with the `deleteConnections` parameter. Otherwise, the API call fails with error requiring confirmation.","examples":{"remove-user":{"value":true}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"usersRoleId":{"type":"integer","description":"The ID of the user role. Check the `GET /users/roles` API call for the available `usersRoleId` values."}}},"examples":{"set-user-role":{"summary":"Set user role","description":"Set the user role in the organization. Get all user role IDs with the API call `GET /users/roles`.","value":{"usersRoleId":13}},"all-cols":{"summary":"Set user data all cols","description":"Set user role in the organization. The response returns all available columns for the user role in the organization.","value":{"usersRoleId":13}},"remove-user":{"summary":"Remove user from organization","description":"To remove a user from the organization send an empty request body.","value":""}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userOrganizationRole":{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"string"}}}}},"examples":{"set-user-role":{"value":{"userOrganizationRole":{"userId":5,"organizationId":22,"usersRoleId":13,"invitation":null,"ssoPending":false}}},"all-cols":{"value":{"userOrganizationRole":{"userId":5,"organizationId":22,"usersRoleId":13,"invitation":null,"ssoPending":false,"organizationTeamsCount":2,"joinedTeamsCount":2}}},"remove-user":{"value":{"userOrganizationRole":{"userId":5,"organizationId":22,"usersRoleId":null,"invitation":null,"ssoPending":null}}}}}}}}}},"/admin/users/{userId}/user-organization-roles/{organizationId}/transfer":{"post":{"x-private":true,"tags":["Admin / Users"],"summary":"Transfer organization ownership","description":"Transfer organization ownership to the user with the specified `userId`.","security":[{"token":["admin:write","user:write"]}],"parameters":[{"name":"userId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the user.","example":22},{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userOrganizationRoles":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"boolean"}}}}}},"example":{"userOrganizationRoles":[{"userId":22,"organizationId":11,"usersRoleId":11,"invitation":null},{"userId":1,"organizationId":11,"usersRoleId":12,"invitation":null}]}}}}}}},"/admin/users/{userId}/user-team-roles/{teamId}":{"post":{"x-private":true,"tags":["Admin / Users"],"summary":"Set user team role","description":"Sets the user role in the team. Specify the user team role ID in the request body. The user has to be already a member of the team's organization.\n\nGet all available user role IDs and the corresponding user role names with the API call `GET /users/roles`.\n\nIf the user is not a member of the team, the API call adds the user to the team with the specified role.\nIf you send an empty request body, the API call removes the user with the specified `userId` from the team, setting the user's team role to \"None\".","security":[{"token":["admin:write","users:write"]}],"parameters":[{"name":"confirmed","in":"query","schema":{"type":"boolean"},"examples":{"remove-user":{"value":true}},"description":"Use this parameter when you are removing a user from a team. Set this parameter to `true` is you want to delete the user's connections from the team with the parameter `deleteConnections`."},{"name":"deleteConnections","in":"query","schema":{"type":"boolean"},"examples":{"remove-user":{"value":true}},"description":"Set this parameter to `true` if you are removing a user from a team to delete also the user's connections. If you set this parameter to `false`, the API call won't delete the user's connections."},{"name":"userId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the user.","example":111},{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"usersRoleId":{"type":"integer","description":"The ID of the user role. Check the `GET /users/roles` API call for the available `usersRoleId` values."}}},"examples":{"set-role":{"summary":"Set user team role","description":"Sets the team role of the specified user.","value":{"usersRoleId":3}},"remove-user":{"summary":"Remove user","description":"Removes user from the team. In the admin interface, Make still lists the user in the team with the user team role \"None\".","value":""}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userTeamRole":{"type":"object","properties":{"usersRoleId":{"type":"integer","nullable":true,"description":"The user's role in the team, or `null` when the user has no role (e.g. after removal)."},"userId":{"type":"integer"},"teamId":{"type":"integer"},"changeable":{"type":"boolean"},"ssoPending":{"type":"boolean"}}}}},"examples":{"set-role":{"value":{"userTeamRole":{"usersRoleId":3,"userId":111,"teamId":22,"changeable":true,"ssoPending":false}}},"remove-user":{"value":{"userTeamRole":{"usersRoleId":null,"userId":111,"teamId":22,"changeable":true,"ssoPending":false}}}}}}}}}},"/admin/users/admins-roles":{"get":{"x-private":true,"tags":["Admin / Users"],"summary":"List admin roles","description":"Gets the list of available admin roles. Admin roles define the permissions that users have at the instance level in the Make White Label product.\n\nRefer to the [user admin roles documentation](https://www.make.com/en/help/white-label/manage-organizations#instance-level-roles-1628394) for the full breakdown of the user admin roles permissions.\n","security":[{"token":["admin:read"]}],"parameters":[{"name":"category","in":"query","schema":{"type":"string","enum":["system","developers","support"]},"description":"Filter roles by category.","examples":{"filtering":{"value":"developers"}}},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"default":{"summary":"Default columns","value":["id","name"]},"all":{"summary":"All columns","value":["id","name","permissions","category","identifier","managementType"]}}}],"responses":{"200":{"description":"Successful response with the list of admin roles.","content":{"application/json":{"schema":{"type":"object","properties":{"usersAdminsRoles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The unique identifier of the admin role.","example":1},"name":{"type":"string","description":"The name of the admin role.","example":"SA"},"permissions":{"type":"array","description":"The list of permission names assigned to this role.","items":{"type":"string"},"example":["scenario:read","scenario:write"]},"category":{"type":"string","description":"The category of the admin role.","enum":["system","developers","support"],"example":"system"},"identifier":{"type":"string","description":"The unique immutable string identifier of the admin role.","example":"sa"},"managementType":{"type":"string","nullable":true,"description":"The management type of the admin role.","enum":["admin_managed","custom_managed","system_locked"],"example":"system_locked"}}}}}},"examples":{"default":{"summary":"Default response (id and name only)","value":{"usersAdminsRoles":[{"id":1,"name":"SA"},{"id":4,"name":"Admin"}]}},"withAllColumns":{"summary":"Response with all columns","value":{"usersAdminsRoles":[{"id":1,"name":"SA","permissions":["scenario:read","scenario:write"],"category":"system","identifier":"sa","managementType":"system_locked"},{"id":4,"name":"Admin","permissions":["scenario:read"],"category":"system","identifier":"admin","managementType":"admin_managed"}]}}}}}}}}},"/admin/users/{userId}/affiliate/stats":{"get":{"x-private":true,"tags":["Admin / Users"],"summary":"Get affiliate commission stats for a user","description":"Retrieves graph data for commisions in the past year for the specified user.","security":[{"token":["admin:read","user:read"]}],"parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer"},"description":"The ID of the user.","example":22},{"name":"dateFrom","in":"query","schema":{"type":"string","format":"date"},"example":"2021-08-01"},{"name":"dateTo","in":"query","schema":{"type":"string","format":"date"},"example":"2021-11-01"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"stats":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"visits":{"type":"integer"},"registrations":{"type":"integer"},"commission":{"type":"number"}}}}}},"example":{"stats":[{"date":"2020-10-11","visits":12,"registrations":4,"commission":400},{"date":"2020-10-12","visits":3,"registrations":0,"commission":0},{"date":"2020-10-13","visits":0,"registrations":0,"commission":0},{"date":"2020-10-14","visits":1,"registrations":0,"commission":500},{"date":"2020-10-15","visits":6,"registrations":5,"commission":0},{"date":"2020-10-16","visits":7,"registrations":3,"commission":1000}]}}}}}}},"/admin/users/{userId}/affiliate/commission-info":{"get":{"x-private":true,"tags":["Admin / Users"],"summary":"Get affiliate commission info for a user","description":"Retrieves general info about accumulated commissions of the specified user.","security":[{"token":["admin:read","user:read"]}],"parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer"},"description":"The ID of the user.","example":22},{"name":"dateFrom","in":"query","schema":{"type":"string","format":"date"},"example":"2021-08-01"},{"name":"dateTo","in":"query","schema":{"type":"string","format":"date"},"example":"2021-11-01"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"partnerCode":{"type":"string"},"availablePayout":{"type":"number"},"availablePayoutDistinctOrgs":{"type":"integer"},"isPayoutRequested":{"type":"boolean"},"isPayoutAvailable":{"type":"boolean"},"minimumPayout":{"type":"number"},"minimumOrganizations":{"type":"integer"},"earningsRange":{"type":"number"},"earningsTotal":{"type":"number"},"usersBroughtPayingRange":{"type":"integer"},"usersBroughtPayingTotal":{"type":"integer"},"usersBroughtAllRange":{"type":"integer"},"usersBroughtAllTotal":{"type":"integer"},"orgsBroughtPayingRange":{"type":"integer"},"orgsBroughtPayingTotal":{"type":"integer"},"orgsBroughtAllRange":{"type":"integer"},"orgsBroughtAllTotal":{"type":"integer"},"conversionRateUsersPayingRange":{"type":"number"},"conversionRateUsersPayingTotal":{"type":"number"},"conversionRateUsersAllRange":{"type":"number"},"conversionRateUsersAllTotal":{"type":"number"},"conversionRateOrgsPayingRange":{"type":"number"},"conversionRateOrgsPayingTotal":{"type":"number"},"conversionRateOrgsAllRange":{"type":"number"},"conversionRateOrgsAllTotal":{"type":"number"}}},"example":{"partnerCode":"mypartnercode","availablePayout":300.5,"availablePayoutDistinctOrgs":3,"isPayoutRequested":false,"isPayoutAvailable":true,"minimumPayout":100,"minimumOrganizations":3,"earningsRange":200.5,"earningsTotal":3333.45,"usersBroughtPayingRange":1,"usersBroughtPayingTotal":2,"usersBroughtAllRange":5,"usersBroughtAllTotal":12,"orgsBroughtPayingRange":2,"orgsBroughtPayingTotal":3,"orgsBroughtAllRange":8,"orgsBroughtAllTotal":16,"conversionRateUsersPayingRange":0.25,"conversionRateUsersPayingTotal":0.1875,"conversionRateUsersAllRange":0.11,"conversionRateUsersAllTotal":0.05,"conversionRateOrgsPayingRange":0.25,"conversionRateOrgsPayingTotal":0.1875,"conversionRateOrgsAllRange":0.11,"conversionRateOrgsAllTotal":0.05}}}}}}},"/admin/users/{userId}/affiliate/commissions":{"get":{"x-private":true,"tags":["Admin / Users"],"summary":"Get affiliate commissions for a user","description":"Retrieves detailed data about individual commisions of the specified user.","security":[{"token":["admin:read","user:read"]}],"parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer"},"description":"The ID of the user.","example":22},{"name":"statusId","in":"query","schema":{"type":"integer"},"example":1},{"name":"dateFrom","in":"query","schema":{"type":"string","format":"date"},"example":"2021-08-01"},{"name":"dateTo","in":"query","schema":{"type":"string","format":"date"},"example":"2021-11-01"},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by.","example":"id"},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"commisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"organization_id":{"type":"integer"},"created":{"type":"string","format":"date-time"},"type":{"type":"string"},"status":{"type":"string"},"commission":{"type":"number"},"source":{"type":"string"},"payout_requested":{"type":"string","format":"date-time"},"payout_approved":{"type":"string","format":"date-time"},"payout_realized":{"type":"string","format":"date-time"}}}}}},"example":{"commissions":[{"id":1,"organization_id":3,"created":"2021-10-01 12:19:49.227869","type":"Registration","status":"Registration","commission":null,"source":"http://foo.bar","payout_requested":null,"payout_approved":null,"payout_realized":null},{"id":2,"organization_id":3,"created":"2021-10-01 12:19:49.227869","type":"Payment","status":"Available","commission":300,"source":null,"payout_requested":null,"payout_approved":null,"payout_realized":null},{"id":3,"organization_id":3,"created":"2021-11-21 12:19:49.227869","type":"Payment","status":"Requested","commission":500,"source":null,"payout_requested":"2021-12-21 12:19:49.227869","payout_approved":null,"payout_realized":null},{"id":4,"organization_id":4,"created":"2021-11-21 12:19:49.227869","type":"Payment","status":"Approved","commission":658.5,"source":null,"payout_requested":"2021-12-01 12:19:49.227869","payout_approved":"2021-12-03 12:19:49.227869","payout_realized":null},{"id":5,"partner_id":1,"organization_id":4,"created":"2021-11-21 12:19:49.227869","type":"Payment","status":"Paid","commission":300,"source":null,"payout_requested":"2021-02-01 12:19:49.227869","payout_approved":"2021-02-03 12:19:49.227869","payout_realized":"2021-02-04 12:19:49.227869"}]}}}}}}},"/admin/system-settings/{key}":{"put":{"x-private":true,"tags":["Admin / System settings"],"security":[{"token":["admin:write"]}],"summary":"Edit one system setting","parameters":[{"name":"key","in":"path","schema":{"type":"string"},"required":true,"description":"The name of the system setting key.","example":"brand_title"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"any"}},"required":["value"]}}}},"responses":{"200":{"description":"Successful response"}}}},"/admin/system-settings/default-license":{"get":{"x-private":true,"tags":["Admin / Platform settings"],"summary":"Get default license","description":"Gets the default organization license for your Make White Label instance. Make uses the default organization license when you create a new organization without specifying the organization's license.","security":[{"token":["admin:read","system:read"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"defaultLicense":{"type":"object","additionalProperties":{}}}},"example":{"defaultLicense":{"dslimit":40,"fslimit":2147483648,"iolimit":10000,"apiLimit":2000,"dsslimit":524288000,"fulltext":true,"interval":1,"transfer":1099511627776,"operations":80000000,"scenarioIO":true,"gracePeriod":0,"executionTime":45,"restartPeriod":"1 month","customVariables":true,"creatingTemplates":true,"installPublicApps":true,"productManagement":"salesforce","onDemandScheduling":true}}}}}}}},"/agents":{"get":{"tags":["On-prem agents"],"summary":"List on-prem agents","description":"Retrieves a collection of agents for a company with a given ID","security":[{"token":["agents:read"]}],"parameters":[{"name":"organizationId","in":"query","schema":{"type":"integer"},"example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"agents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"tenantId":{"type":"string"},"name":{"type":"string"},"clientSecret":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","STOPPED","NOT_RESPONDING","REGISTERED","CORRUPTED"]},"alerted":{"type":"boolean"},"connected":{"type":"boolean"},"version":{"type":"string"},"createdDate":{"type":"string","format":"date-time"},"lastConnectionDate":{"type":"string","format":"date-time"},"systemConnectionsCount":{"type":"integer","format":"int32"}}}}}}}}}}}},"/agents/{agentId}":{"get":{"tags":["On-prem agents"],"summary":"Get on-prem agent details","description":"Retrieves an agents for a agent with given ID","security":[{"token":["agents:read"]}],"parameters":[{"name":"organizationId","in":"query","schema":{"type":"integer"},"example":11},{"description":"The ID of the agent.","name":"agentId","in":"path","schema":{"type":"string","format":"uuid"},"example":"78781d1f-8cc0-4f42-8e77-c02812f78b53","required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"agent":{"type":"object","properties":{"id":{"type":"string"},"tenantId":{"type":"string"},"name":{"type":"string"},"clientSecret":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","STOPPED","NOT_RESPONDING","REGISTERED","CORRUPTED"]},"alerted":{"type":"boolean"},"connected":{"type":"boolean"},"version":{"type":"string"},"createdDate":{"type":"string","format":"date-time"},"lastConnectionDate":{"type":"string","format":"date-time"},"systemConnectionsCount":{"type":"integer","format":"int32"}}}}}}}}}},"post":{"tags":["On-prem agents"],"summary":"Create on-prem agent","description":"Creates a new agent","security":[{"token":["agents:write"]}],"parameters":[{"name":"organizationId","in":"query","schema":{"type":"integer"},"example":11},{"description":"The ID of the agent.","name":"agentId","in":"path","schema":{"type":"string","format":"uuid"},"example":"78781d1f-8cc0-4f42-8e77-c02812f78b53","required":true}],"requestBody":{"content":{"application/json":{"schema":{"required":["name"],"type":"object","properties":{"name":{"type":"string"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"agent":{"type":"object","properties":{"id":{"type":"string"},"tenantId":{"type":"string"},"name":{"type":"string"},"clientSecret":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","STOPPED","NOT_RESPONDING","REGISTERED","CORRUPTED"]},"alerted":{"type":"boolean"},"connected":{"type":"boolean"},"version":{"type":"string"},"createdDate":{"type":"string","format":"date-time"},"lastConnectionDate":{"type":"string","format":"date-time"},"systemConnectionsCount":{"type":"integer","format":"int32"}}}}}}}}}},"patch":{"tags":["On-prem agents"],"summary":"Update on-prem agent","description":"Updates a new agent with given ID","security":[{"token":["agents:write"]}],"parameters":[{"name":"organizationId","in":"query","schema":{"type":"integer"},"example":11},{"description":"The ID of the agent.","name":"agentId","in":"path","schema":{"type":"string","format":"uuid"},"example":"78781d1f-8cc0-4f42-8e77-c02812f78b53","required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"\\S","description":"New name of the agent. Leading and trailing whitespace is removed before saving; a whitespace-only name is rejected."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"agent":{"type":"object","properties":{"id":{"type":"string"},"tenantId":{"type":"string"},"name":{"type":"string"},"clientSecret":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","STOPPED","NOT_RESPONDING","REGISTERED","CORRUPTED"]},"alerted":{"type":"boolean"},"connected":{"type":"boolean"},"version":{"type":"string"},"createdDate":{"type":"string","format":"date-time"},"lastConnectionDate":{"type":"string","format":"date-time"},"systemConnectionsCount":{"type":"integer","format":"int32"}}}}}}}}}},"delete":{"tags":["On-prem agents"],"summary":"Delete on-prem agent","description":"Removes an agent with a given ID.","security":[{"token":["agents:write"]}],"parameters":[{"name":"organizationId","in":"query","schema":{"type":"integer"},"example":11},{"description":"The ID of the agent.","name":"agentId","in":"path","schema":{"type":"string","format":"uuid"},"example":"78781d1f-8cc0-4f42-8e77-c02812f78b53","required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"agent":{"type":"string","format":"uuid"}}},"example":{"agent":"78781d1f-8cc0-4f42-8e77-c02812f78b53"}}}}}}},"/ai-agents/v1/agents":{"post":{"summary":"Create Agent","description":"Create a new agent","tags":["AI Agents"],"security":[{"token":["ai-agents:write"]}],"parameters":[{"schema":{"type":"number","exclusiveMinimum":0},"required":true,"name":"teamId","in":"query"}],"requestBody":{"description":"Request body for creating a new agent.","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"teamId":{"type":"number","exclusiveMinimum":0},"makeConnectionId":{"type":"number"},"defaultModel":{"type":"string"},"systemPrompt":{"type":"string","minLength":1},"llmConfig":{"type":"object","properties":{"maxTokens":{"type":"number"}}},"scenarios":{"type":"array","items":{"type":"object","properties":{"makeScenarioId":{"type":"number","exclusiveMinimum":0},"approvalMode":{"type":"string","enum":["auto-run","approval-required"],"default":"auto-run"}},"required":["makeScenarioId"]}},"historyConfig":{"type":"object","nullable":true,"properties":{"iterationsFromHistoryCount":{"type":"integer"}}},"mcpConfigs":{"type":"array","items":{"type":"object","properties":{"mcpConnectionId":{"type":"integer"},"toolIds":{"type":"array","items":{"type":"string"}}}}},"contexts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}}}},"outputParserFormat":{"type":"object","oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["text"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["make-schema"]},"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the field"},"type":{"type":"string","enum":["string","text","email","url","uuid","color","number","integer","uinteger","boolean","date","json","dynamicCollection","collection","array","select","any"],"description":"The type of the interface element"},"label":{"type":"string","description":"Optional label for the field"},"required":{"type":"boolean","default":false,"description":"Whether the field is required"},"spec":{"oneOf":[{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean","default":false}}},{"type":"array","maxItems":10,"items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean","default":false}}}}],"description":"Optional nested specification for complex fields"}},"required":["name","type"]},"minItems":1}},"required":["type","schema"]}]}},"required":["name","teamId","makeConnectionId","defaultModel","systemPrompt"],"description":"Request body for creating a new agent.","example":{"name":"Example Agent","teamId":1,"makeConnectionId":123,"defaultModel":"gpt-3.5-turbo","systemPrompt":"You are a helpful assistant.","scenarios":[{"makeScenarioId":123,"approvalMode":"auto-run"}],"mcpConfigs":[{"mcpConnectionId":456,"toolIds":["tool1","tool2"],"name":"Example MCP Config"}],"historyConfig":{"iterationsFromHistoryCount":10},"llmConfig":{"maxTokens":100000},"contexts":[{"id":"123e4567-e89b-12d3-a456-426614174000"}]}}}}},"responses":{"201":{"description":"Agent created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"teamId":{"type":"number","exclusiveMinimum":0},"makeConnectionId":{"type":"number"},"defaultModel":{"type":"string"},"systemPrompt":{"type":"string","minLength":1},"agentId":{"type":"string","format":"uuid"}},"required":["name","teamId","makeConnectionId","defaultModel","systemPrompt","agentId"],"description":"Response body for creating a new agent.","example":{"agentId":"123e4567-e89b-12d3-a456-426614174000","name":"Example Agent","teamId":1,"makeConnectionId":123,"defaultModel":"gpt-3.5-turbo","systemPrompt":"You are a helpful assistant."}}}}}}},"get":{"summary":"Get Agents","description":"Retrieve a list of all agents","tags":["AI Agents"],"security":[{"token":["ai-agents:read"]}],"parameters":[{"schema":{"type":"number","exclusiveMinimum":0},"required":true,"name":"teamId","in":"query"}],"responses":{"200":{"description":"List of agents retrieved successfully","content":{"application/json":{"schema":{"type":"object","required":["id","name","teamId","createdAt","systemPrompt","defaultModel","invocationConfig","scenarios","mcpConfigs","historyConfig","llmConfig","contexts"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"teamId":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"systemPrompt":{"type":"string"},"defaultModel":{"type":"string"},"invocationConfig":{"type":"object","required":["recursionLimit"],"properties":{"recursionLimit":{"type":"integer"}}},"scenarios":{"type":"array","items":{"type":"object","required":["makeScenarioId"],"properties":{"makeScenarioId":{"type":"integer"},"approvalMode":{"type":"string"}}}},"mcpConfigs":{"type":"array","items":{"type":"object","required":["mcpConnectionId","toolIds","name"],"properties":{"mcpConnectionId":{"type":"integer"},"toolIds":{"type":"array","items":{"type":"string"}},"name":{"type":"string","description":"Name of the MCP connection. If the underlying MCP connection was deleted, or is otherwise corrupted, returns 'Invalid MCP Connection'."}}}},"historyConfig":{"type":"object","required":["iterationsFromHistoryCount"],"properties":{"iterationsFromHistoryCount":{"type":"integer"}}},"llmConfig":{"type":"object","required":["maxTokens"],"properties":{"maxTokens":{"type":"integer"}}},"contexts":{"type":"array","items":{"type":"object","required":["id","agentId","documentName","description","createdAt","metadata","isTemporary"],"properties":{"id":{"type":"string","format":"uuid"},"agentId":{"type":"string","format":"uuid"},"documentName":{"type":"string"},"description":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"metadata":{"type":"object","additionalProperties":true},"isTemporary":{"type":"boolean"}}}},"outputParser":{"type":"object","oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["text"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["make-schema"]},"schema":{"type":"array"},"items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the field"},"type":{"type":"string","enum":["string","text","email","url","uuid","color","number","integer","uinteger","boolean","date","json","dynamicCollection","collection","array","select","any"],"description":"The type of the interface element"},"label":{"type":"string","description":"Optional label for the field"},"required":{"type":"boolean","default":false,"description":"Whether the field is required"},"spec":{"oneOf":[{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean","default":false}}},{"type":"array","maxItems":10,"items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean","default":false}}}}],"description":"Optional nested specification for complex fields"}},"minItems":1}},"required":["type","schema"]}]}}},"example":{"id":"b504aa93-0752-4bf8-887e-c2c717d525bf","name":"myagent","teamId":2,"createdAt":"2025-06-25T13:36:46.730Z","systemPrompt":"you are the greatest bot ever","defaultModel":"gemini-2.5-flash","invocationConfig":{"recursionLimit":300},"scenarios":[{"makeScenarioId":123,"approvalMode":"auto-run"}],"mcpConfigs":[{"mcpConnectionId":456,"toolIds":["tool1","tool2"],"name":"Example MCP Config"}],"historyConfig":{"iterationsFromHistoryCount":10},"llmConfig":{"maxTokens":100000},"contexts":[{"id":"123e4567-e89b-12d3-a456-426614174000","agentId":"1b504aa93-0752-4bf8-887e-c2c717d525bf0","documentName":"Example Document","description":"This is an example context for the agent.","createdAt":"2025-06-26T06:53:15.407Z","metadata":{"type":"csv"},"isTemporary":false}]}}}}}}},"/ai-agents/v1/agents/{agentId}":{"get":{"summary":"Get Agent by ID","description":"Retrieve an agent by its ID","tags":["AI Agents"],"security":[{"token":["ai-agents:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"agentId","in":"path"},{"schema":{"type":"number","exclusiveMinimum":0},"required":true,"name":"teamId","in":"query"}],"responses":{"200":{"description":"Agent retrieved successfully","content":{"application/json":{"schema":{"type":"object","required":["id","name","teamId","createdAt","systemPrompt","defaultModel","invocationConfig","scenarios","mcpConfigs","historyConfig","llmConfig","contexts"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"teamId":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"systemPrompt":{"type":"string"},"defaultModel":{"type":"string"},"invocationConfig":{"type":"object","required":["recursionLimit"],"properties":{"recursionLimit":{"type":"integer"}}},"makeConnectionId":{"type":"integer"},"makeConnectionType":{"type":"string","nullable":true},"pastConfigurations":{"type":"array","items":{"type":"object","required":["name","llmConfig","scenarios","mcpConfigs","defaultModel","systemPrompt","historyConfig","invocationConfig"],"properties":{"name":{"type":"string"},"llmConfig":{"type":"object","required":["maxTokens"],"properties":{"maxTokens":{"type":"integer"}}},"scenarios":{"type":"array","items":{"type":"object","properties":{"makeScenarioId":{"type":"integer","exclusiveMinimum":0},"approvalMode":{"type":"string","enum":["auto-run","approval-required"],"default":"auto-run"}},"required":["makeScenarioId"]}},"mcpConfigs":{"type":"array","items":{"type":"object","required":["toolIds","mcpConnectionId","name"],"properties":{"toolIds":{"type":"array","items":{"type":"string"}},"mcpConnectionId":{"type":"integer","description":"(Make) ID of the MCP connection."}}}},"defaultModel":{"type":"string"},"systemPrompt":{"type":"string"},"historyConfig":{"type":"object","required":["iterationsFromHistoryCount"],"properties":{"iterationsFromHistoryCount":{"type":"integer"}}},"invocationConfig":{"type":"object","required":["recursionLimit"],"properties":{"recursionLimit":{"type":"integer"}}}}}},"scenarios":{"type":"array","items":{"type":"object","required":["makeScenarioId"],"properties":{"makeScenarioId":{"type":"integer"},"approvalMode":{"type":"string"}}}},"mcpConfigs":{"type":"array","items":{"type":"object","required":["mcpConnectionId","tools","name"],"properties":{"mcpConnectionId":{"type":"integer"},"tools":{"type":"array","items":{"type":"object","required":["id","isDeprecated"],"properties":{"id":{"type":"string","description":"Name of the MCP tool (from the mcp server)"},"isDeprecated":{"type":"boolean","description":"If the user has a tool set up in his agent, that the MCP server no longer supports, it is marked as deprecated (=true)."}}}},"name":{"type":"string","description":"Name of the MCP connection. If the underlying MCP connection was deleted, or is otherwise corrupted, returns 'Invalid MCP Connection'."}}}},"historyConfig":{"type":"object","required":["iterationsFromHistoryCount"],"properties":{"iterationsFromHistoryCount":{"type":"integer"}}},"llmConfig":{"type":"object","required":["maxTokens"],"properties":{"maxTokens":{"type":"integer"}}},"llmProviderId":{"type":"integer"},"contexts":{"type":"array","items":{"type":"object","required":["id","agentId","documentName","description","createdAt","metadata","isTemporary"],"properties":{"id":{"type":"string","format":"uuid"},"agentId":{"type":"string","format":"uuid"},"documentName":{"type":"string"},"description":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"metadata":{"type":"object","additionalProperties":true},"isTemporary":{"type":"boolean"}}}},"outputParser":{"type":"object","oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["text"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["make-schema"]},"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the field"},"type":{"type":"string","enum":["string","text","email","url","uuid","color","number","integer","uinteger","boolean","date","json","dynamicCollection","collection","array","select","any"],"description":"The type of the interface element"},"label":{"type":"string","description":"Optional label for the field"},"required":{"type":"boolean","default":false,"description":"Whether the field is required"},"spec":{"oneOf":[{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean","default":false}}},{"type":"array","maxItems":10,"items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean","default":false}}}}],"description":"Optional nested specification for complex fields"}},"required":["name","type"]},"minItems":1}},"required":["type","schema"]}]}}},"example":{"id":"b504aa93-0752-4bf8-887e-c2c717d525bf","name":"myagent","teamId":2,"createdAt":"2025-06-25T13:36:46.730Z","systemPrompt":"you are the greatest bot ever","defaultModel":"gemini-2.5-flash","invocationConfig":{"recursionLimit":300},"makeConnectionId":18,"makeConnectionType":"openai-gpt-3","pastConfigurations":[{"name":"myagent","llmConfig":{"maxTokens":100000},"scenarios":[],"mcpConfigs":[{"toolIds":["s1_list_inventory"],"mcpConnectionId":19}],"defaultModel":"gemini-2.5-flash","systemPrompt":"you are the greatest bot ever","historyConfig":{"iterationsFromHistoryCount":10},"invocationConfig":{"recursionLimit":300}}],"scenarios":[{"makeScenarioId":123,"approvalMode":"auto-run"}],"mcpConfigs":[{"mcpConnectionId":19,"toolIds":["s1_list_inventory"],"name":"mymcpconnection"},{"mcpConnectionId":14,"tools":[{"id":"fetch_generic_url_content","isDeprecated":false},{"id":"search_generic_code","isDeprecated":false}],"name":"GitMCP"}],"historyConfig":{"iterationsFromHistoryCount":10},"llmConfig":{"maxTokens":100000},"llmProviderId":9,"contexts":[{"id":"123e4567-e89b-12d3-a456-426614174000","agentId":"1b504aa93-0752-4bf8-887e-c2c717d525bf0","documentName":"Example Document","description":"This is an example context for the agent.","createdAt":"2025-06-26T06:53:15.407Z","metadata":{"type":"csv"},"isTemporary":false}],"outputParser":{"type":"make-schema","schema":[{"name":"field1","type":"string","label":"Field 1","required":true},{"name":"field2","type":"integer","label":"Field 2","required":false}]}}}}}}},"patch":{"summary":"Modify Agent by ID","description":"Modify an existing agent by its ID","tags":["AI Agents"],"security":[{"token":["ai-agents:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"agentId","in":"path"},{"schema":{"type":"number","exclusiveMinimum":0},"required":true,"name":"teamId","in":"query"}],"requestBody":{"description":"Request body for modifying an existing agent.","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"systemPrompt":{"type":"string","minLength":1},"defaultModel":{"type":"string"},"llmConfig":{"type":"object","properties":{"maxTokens":{"type":"number"}}},"invocationConfig":{"type":"object","properties":{"recursionLimit":{"type":"integer"},"timeout":{"type":"integer"}}},"scenarios":{"type":"array","items":{"type":"object","properties":{"makeScenarioId":{"type":"number","exclusiveMinimum":0},"approvalMode":{"type":"string","enum":["auto-run","approval-required"],"default":"auto-run"}},"required":["makeScenarioId"]}},"historyConfig":{"type":"object","nullable":true,"properties":{"iterationsFromHistoryCount":{"type":"integer"}}},"mcpConfigs":{"type":"array","items":{"type":"object","properties":{"mcpConnectionId":{"type":"integer"},"toolIds":{"type":"array","items":{"type":"string"}}},"required":["mcpConnectionId","toolIds"]}},"outputParserFormat":{"type":"object","oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["text"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["make-schema"]},"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the field"},"type":{"type":"string","enum":["string","text","email","url","uuid","color","number","integer","uinteger","boolean","date","json","dynamicCollection","collection","array","select","any"],"description":"The type of the interface element"},"label":{"type":"string","description":"Optional label for the field"},"required":{"type":"boolean","default":false,"description":"Whether the field is required"},"spec":{"oneOf":[{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean","default":false}}},{"type":"array","maxItems":10,"items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean","default":false}}}}],"description":"Optional nested specification for complex fields"}}},"minItems":1}},"required":["type","schema"]}]}},"description":"Request body for modifying an existing agent.","example":{"name":"Modified Agent","systemPrompt":"You are a modified helpful assistant.","defaultModel":"gpt-4","llmConfig":{"maxTokens":1000},"invocationConfig":{"recursionLimit":5,"timeout":30000},"scenarios":[{"makeScenarioId":345,"approvalMode":"auto-run"}],"historyConfig":{"iterationsFromHistoryCount":3},"outputParserFormat":{"type":"make-schema","schema":[{"name":"field1","type":"string","label":"Field 1","required":true},{"name":"field2","type":"integer","label":"Field 2","required":false}]}}}}}},"responses":{"204":{"description":"Agent modified successfully"}}},"delete":{"summary":"Delete Agent by ID","description":"Delete an agent by its ID","tags":["AI Agents"],"security":[{"token":["ai-agents:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"agentId","in":"path"},{"schema":{"type":"number","exclusiveMinimum":0},"required":true,"name":"teamId","in":"query"}],"responses":{"204":{"description":"Agent deleted successfully"}}}},"/ai-agents/v1/agents/{agentId}/run":{"post":{"summary":"Run Agent","description":"Run an agent with the provided ID","tags":["AI Agents"],"security":[{"token":["ai-agents:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"agentId","in":"path"},{"schema":{"type":"number","exclusiveMinimum":0},"required":true,"name":"teamId","in":"query"}],"requestBody":{"description":"Request body for running an agent.","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string","enum":["assistant","user"]},"content":{"type":"string"}},"required":["role","content"]}},"threadId":{"type":"string","minLength":1,"default":"a64d23ed-2580-43e4-a898-e97193d7fd5e"},"callbackUrl":{"type":"string"},"config":{"type":"object","properties":{"systemPrompt":{"type":"string"},"additionalSystemPrompt":{"type":"string"},"scenarios":{"type":"array","items":{"type":"object","properties":{"makeScenarioId":{"type":"number","exclusiveMinimum":0},"approvalMode":{"type":"string","enum":["auto-run","approval-required"],"default":"auto-run"}},"required":["makeScenarioId"]}},"historyConfig":{"type":"object","properties":{"iterationsFromHistoryCount":{"type":"integer"}}},"llmConfig":{"type":"object","properties":{"llmModel":{"type":"string","enum":["gpt-4o","gpt-4o-mini","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","o1","o3","o3-mini","o4-mini","claude-3-7-sonnet-latest","claude-3-5-sonnet-latest","claude-3-5-haiku-latest","claude-3-opus-latest","claude-3-haiku-20240307","claude-3-sonnet-20240229","mistral-large-latest","open-mistral-nemo","mistral-small-latest","codestral-latest","command-r7b-12-2024","command-r-plus-08-2024","command-r-08-2024","llama-3.3-70b-versatile","llama-3.1-8b-instant","llama3-70b-8192","llama3-8b-8192","grok-3-latest","grok-3-fast-latest","grok-3-mini-latest","grok-3-mini-fast-latest","grok-2-latest","gemini-2.5-pro","gemini-2.5-flash","gemini-2.0-flash","gemini-2.0-flash-lite","gemini-1.5-flash","gemini-1.5-pro"]},"settings":{"type":"object","properties":{"maxTokens":{"type":"number"}}}}},"invocationConfig":{"type":"object","properties":{"recursionLimit":{"type":"integer"},"timeout":{"type":"integer"}}},"mcpConfigs":{"type":"array","items":{"type":"object","properties":{"mcpConnectionId":{"type":"integer"},"toolIds":{"type":"array","items":{"type":"string"}}},"required":["mcpConnectionId","toolIds"]}},"outputParser":{"type":"object","oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["text"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["make-schema"]},"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the field"},"type":{"type":"string","enum":["string","text","email","url","uuid","color","number","integer","uinteger","boolean","date","json","dynamicCollection","collection","array","select","any"],"description":"The type of the interface element"},"label":{"type":"string","description":"Optional label for the field"},"required":{"type":"boolean","default":false,"description":"Whether the field is required"},"spec":{"oneOf":[{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean","default":false}}},{"type":"array","maxItems":10,"items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean","default":false}}}}],"description":"Optional nested specification for complex fields"}},"required":["name","type"]},"minItems":1}},"required":["type","schema"]}]}}}},"required":["messages","config"],"description":"Request body for running an agent.","example":{"messages":[{"role":"user","content":"What can you do?"}],"threadId":"123e4567-e89b-12d3-a456-426614174000","config":{"systemPrompt":"You are a helpful assistant.","additionalSystemPrompt":"And you should always reply politely.","scenarios":[{"makeScenarioId":123,"approvalMode":"auto-run"}],"historyConfig":{"iterationsFromHistoryCount":2},"llmConfig":{"llmModel":"o4-mini","settings":{"maxTokens":1500}},"invocationConfig":{"recursionLimit":3,"timeout":60000},"outputParser":{"type":"text"}}}}}}},"responses":{"200":{"description":"Agent run started successfully","content":{"application/json":{"schema":{"type":"object","properties":{"response":{"type":"string"},"jsonResponse":{"type":"object","additionalProperties":{"nullable":true}},"executionSteps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"index":{"type":"number"},"role":{"type":"string","enum":["system","assistant","user","tool"]},"content":{"type":"string"},"executionTimeMs":{"type":"number"},"tokenUsage":{"nullable":true},"toolCalls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"toolType":{"type":"string","enum":["scenario","mcp","rag"]},"arguments":{"type":"object","additionalProperties":{"nullable":true}}},"required":["name","toolType","arguments"]}},"toolResponse":{"type":"object","properties":{"name":{"type":"string"},"result":{"nullable":true},"status":{"type":"string","enum":["ok","fail"]},"toolType":{"type":"string","enum":["scenario","mcp","rag"]},"executionLink":{"type":"string"}},"required":["status","toolType"]},"agentIterationId":{"type":"string"}},"required":["role","content"]}},"executionTimeMs":{"type":"integer"},"threadId":{"type":"string","format":"uuid"},"tokenUsageSummary":{"type":"object","properties":{"promptTokens":{"type":"integer"},"completionTokens":{"type":"integer"},"totalTokens":{"type":"integer"}}},"lastAgentIterationId":{"type":"string","format":"uuid"}},"required":["response","executionSteps","threadId","tokenUsageSummary"],"description":"Response body for running an agent.","example":{"response":"{\"name\":\"Liz Carlson\",\"time\":14,\"countriesVisited\":[{\"countryName\":\"Spain\",\"population\":47450795},{\"countryName\":\"New Zealand\",\"population\":5185280},{\"countryName\":\"United States\",\"population\":331893745}],\"currentStay\":\"New Zealand\"}","jsonResponse":{"name":"Liz Carlson","time":14,"countriesVisited":[{"countryName":"Spain","population":47450795},{"countryName":"New Zealand","population":5185280},{"countryName":"United States","population":331893745}],"currentStay":"New Zealand"},"executionSteps":[{"id":"4f7aa955-f0e9-499b-85de-0b3bf160c565","index":1,"role":"user","content":"get me sample json data","agentIterationId":"af7aa955-f0e9-499b-85de-0b3bf160c565"},{"id":"4f7aa955-f0e9-499b-85de-0b3bf160c566","index":2,"role":"assistant","content":"{\"name\":\"Liz Carlson\",\"time\":14,\"countriesVisited\":[{\"countryName\":\"Spain\",\"population\":47450795},{\"countryName\":\"New Zealand\",\"population\":5185280},{\"countryName\":\"United States\",\"population\":331893745}],\"currentStay\":\"New Zealand\"}","executionTimeMs":200,"tokenUsage":{"promptTokens":10,"completionTokens":20,"totalTokens":30},"agentIterationId":"af7aa955-f0e9-499b-85de-0b3bf160c565"}],"executionTimeMs":500,"threadId":"123e4567-e89b-12d3-a456-426614174000","tokenUsageSummary":{"promptTokens":10,"completionTokens":20,"totalTokens":30},"lastAgentIterationId":"af7aa955-f0e9-499b-85de-0b3bf160c565"}}}}}}}},"/ai-agents/v1/agents/{agentId}/run/stream":{"post":{"summary":"Run Agent with Server Sent Events (SSE) Streaming","description":"Run an agent with the provided ID and stream the response using Server Sent Events (SSE)","tags":["AI Agents"],"security":[{"token":["ai-agents:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"agentId","in":"path"},{"schema":{"type":"number","exclusiveMinimum":0},"required":true,"name":"teamId","in":"query"}],"requestBody":{"description":"Request body for running an agent with streaming.","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string","enum":["assistant","user"]},"content":{"type":"string"}},"required":["role","content"]}},"threadId":{"type":"string","minLength":1,"default":"d7fbd183-6b53-4dba-9469-00ec3d047cef"},"callbackUrl":{"type":"string"},"config":{"type":"object","properties":{"systemPrompt":{"type":"string"},"additionalSystemPrompt":{"type":"string"},"scenarios":{"type":"array","items":{"type":"object","properties":{"makeScenarioId":{"type":"number","exclusiveMinimum":0},"approvalMode":{"type":"string","enum":["auto-run","approval-required"],"default":"auto-run"}},"required":["makeScenarioId"]}},"historyConfig":{"type":"object","properties":{"iterationsFromHistoryCount":{"type":"integer"}}},"llmConfig":{"type":"object","properties":{"llmModel":{"type":"string","enum":["gpt-4o","gpt-4o-mini","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","o1","o3","o3-mini","o4-mini","claude-sonnet-4-0","claude-opus-4-0","claude-3-7-sonnet-latest","claude-3-5-sonnet-latest","claude-3-5-haiku-latest","claude-3-opus-latest","claude-3-haiku-20240307","mistral-large-latest","open-mistral-nemo","mistral-small-latest","codestral-latest","command-r7b-12-2024","command-r-plus-08-2024","command-r-08-2024","llama-3.3-70b-versatile","llama-3.1-8b-instant","llama3-70b-8192","llama3-8b-8192","grok-3-latest","grok-3-fast-latest","grok-3-mini-latest","grok-3-mini-fast-latest","grok-2-latest","gemini-2.5-pro","gemini-2.5-flash","gemini-2.0-flash","gemini-2.0-flash-lite","gemini-1.5-flash","gemini-1.5-pro"]},"settings":{"type":"object","properties":{"maxTokens":{"type":"number"}}}}},"invocationConfig":{"type":"object","properties":{"recursionLimit":{"type":"integer"},"timeout":{"type":"integer"}}},"mcpConfigs":{"type":"array","items":{"type":"object","properties":{"mcpConnectionId":{"type":"integer"},"toolIds":{"type":"array","items":{"type":"string"}}},"required":["mcpConnectionId","toolIds"]}},"outputParser":{"type":"object","oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["text"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["make-schema"]},"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the field"},"type":{"type":"string","enum":["string","text","email","url","uuid","color","number","integer","uinteger","boolean","date","json","dynamicCollection","collection","array","select","any"],"description":"The type of the interface element"},"label":{"type":"string","description":"Optional label for the field"},"required":{"type":"boolean","default":false,"description":"Whether the field is required"},"spec":{"oneOf":[{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean","default":false}}},{"type":"array","maxItems":10,"items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean","default":false}}}}],"description":"Optional nested specification for complex fields"}},"required":["name","type"]},"minItems":1}},"required":["type","schema"]}]}}}},"required":["messages","config"],"description":"Request body for running an agent.","example":{"messages":[{"role":"user","content":"What can you do?"}],"threadId":"123e4567-e89b-12d3-a456-426614174000","config":{"systemPrompt":"You are a helpful assistant.","additionalSystemPrompt":"And you should always reply politely.","scenarios":[{"makeScenarioId":123,"approvalMode":"auto-run"}],"historyConfig":{"iterationsFromHistoryCount":2},"llmConfig":{"llmModel":"o4-mini","settings":{"maxTokens":1500}},"invocationConfig":{"recursionLimit":3,"timeout":60000},"outputParser":{"type":"text"}}}}}}},"responses":{"200":{"description":"Agent run with streaming started successfully","content":{"text/event-stream":{"schema":{"nullable":true,"description":"Server-Sent Events stream (text/event-stream)","example":"event:step\nid:4ebb9c59-ab75-41d5-8146-7407ce71f484\ndata:{\"role\":\"system\",\"content\":\"do what user says\\nCurrent time (ISO): 2025-06-26T01:42:30.080-06:00\",\"id\":\"445431dd-c20e-4a58-a043-ca9c131d4010\",\"agentIterationId\":\"a132ced5-4afd-4444-ac9d-330cc99c4986\"}\n"}}}}}}},"/ai-agents/v1/contexts":{"post":{"summary":"Create Context","description":"Create a new context with an optional file upload","tags":["AI Agents / Context"],"security":[{"token":["ai-agents:write"]}],"parameters":[{"schema":{"type":"number","exclusiveMinimum":0},"required":true,"name":"teamId","in":"query"}],"requestBody":{"description":"Request body for creating a new context.","required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"agentId":{"type":"string","format":"uuid"},"file":{"nullable":true}},"required":["agentId"],"description":"Schema for uploading a file.","example":{"agentId":"123e4567-e89b-12d3-a456-426614174000","file":{"fieldname":"file","originalname":"example.txt","encoding":"7bit","mimetype":"text/plain","size":1024}}}},"application/json":{"schema":{"type":"object","properties":{"agentId":{"type":"string","format":"uuid"},"content":{"type":"string"},"name":{"type":"string","maxLength":120,"pattern":"^[\\p{L}\\p{N}\\s\\-_.()]*$"},"autosave":{"type":"string","default":"true"}},"required":["agentId"],"description":"Request body for creating a new context.","example":{"agentId":"123e4567-e89b-12d3-a456-426614174000","content":"This is the content of the context.","name":"Example Context","autosave":"true"}}}}},"responses":{"201":{"description":"Context created successfully","content":{}}}},"get":{"summary":"List Context","description":"Retrieve a list of all context for an agent","tags":["AI Agents / Context"],"security":[{"token":["ai-agents:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"agentId","in":"query"},{"schema":{"type":"number","exclusiveMinimum":0},"required":true,"name":"teamId","in":"query"}],"responses":{"200":{"description":"List of context retrieved successfully","content":{}}}}},"/ai-agents/v1/contexts/{contextId}":{"delete":{"summary":"Delete Context","description":"Delete a context by its ID","tags":["AI Agents / Context"],"security":[{"token":["ai-agents:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"contextId","in":"path"},{"schema":{"type":"number","exclusiveMinimum":0},"required":true,"name":"teamId","in":"query"}],"responses":{"204":{"description":"Context deleted successfully"}}}},"/ai-agents/v1/llm-providers":{"get":{"summary":"List LLM Providers","description":"Retrieve a list of all LLM providers","tags":["AI Agents / LLM Providers"],"security":[{"token":["ai-agents:read"]}],"parameters":[{"schema":{"type":"number","exclusiveMinimum":0},"required":true,"name":"teamId","in":"query"}],"responses":{"200":{"description":"LLM providers listed successfully","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"provider":{"type":"string","enum":["openAi","anthropic","mistral","ai-agent-foundry-openai","ai-agent-foundry-non-openai","cohere","groq","xai","gemini","amazon-bedrock","openai-api-spec-compatible"]},"accountName":{"type":"string","description":"Name of the account (Make connection) associated with the LLM provider"}},"required":["id","provider","accountName"]},"description":"Response body containing a list of available LLM providers.","example":[{"id":1,"provider":"openAi","accountName":"openai-gpt-3"},{"id":2,"provider":"anthropic","accountName":"anthropic-claude"}]}}}}}}},"/ai-agents/v1/llm-providers/{providerId}":{"get":{"summary":"Get LLM Provider","description":"Retrieve details of a specific LLM provider by ID","tags":["AI Agents / LLM Providers"],"parameters":[{"schema":{"type":"number"},"required":true,"name":"providerId","in":"path"},{"schema":{"type":"number","exclusiveMinimum":0},"required":true,"name":"teamId","in":"query"}],"security":[{"token":["ai-agents:read"]}],"responses":{"200":{"description":"LLM provider details retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"provider":{"type":"string","enum":["openAi","anthropic","mistral","ai-agent-foundry-openai","ai-agent-foundry-non-openai","cohere","groq","xai","gemini","amazon-bedrock","openai-api-spec-compatible"]}},"required":["id","provider"]},"description":"Detailed information about a specific LLM provider.","example":[{"id":1,"provider":"openAi"}]}}}}}}},"/ai-agents/v1/llm-providers/{providerId}/models":{"get":{"summary":"List Models for LLM Provider","description":"Retrieve a list of models for a specific LLM provider by ID","tags":["AI Agents / LLM Providers"],"parameters":[{"schema":{"type":"number"},"required":true,"name":"providerId","in":"path"},{"schema":{"type":"number","exclusiveMinimum":0},"required":true,"name":"teamId","in":"query"}],"security":[{"token":["ai-agents:read"]}],"responses":{"200":{"description":"List of models for the LLM provider retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"model":{"type":"string","enum":["gpt-4o","gpt-4o-mini","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","o1","o3","o3-mini","o4-mini","claude-3-7-sonnet-latest","claude-3-5-sonnet-latest","claude-3-5-haiku-latest","claude-3-opus-latest","claude-3-haiku-20240307","claude-3-sonnet-20240229","mistral-large-latest","open-mistral-nemo","mistral-small-latest","codestral-latest","command-r7b-12-2024","command-r-plus-08-2024","command-r-08-2024","llama-3.3-70b-versatile","llama-3.1-8b-instant","llama3-70b-8192","llama3-8b-8192","grok-3-latest","grok-3-fast-latest","grok-3-mini-latest","grok-3-mini-fast-latest","grok-2-latest","gemini-2.5-pro","gemini-2.5-flash","gemini-2.0-flash","gemini-2.0-flash-lite","gemini-1.5-flash","gemini-1.5-pro"]},"provider":{"type":"string","enum":["openAi","anthropic","mistral","ai-agent-foundry-openai","ai-agent-foundry-non-openai","cohere","groq","xai","gemini","amazon-bedrock","openai-api-spec-compatible"]},"tokenLimit":{"type":"integer"},"settings":{"type":"object","properties":{"maxTokens":{"type":"integer"}}}},"required":["model","provider","tokenLimit","settings"]},"description":"Response body containing a list of models for a specific LLM provider.","example":[{"provider":"openAi","model":"gpt-4o","tokenLimit":128000,"settings":{"maxTokens":128000}}]}}}}}}},"/ai-browser/context-setups":{"post":{"tags":["AI"],"x-internal":true,"summary":"Start a browser context create setup","description":"Starts an interactive setup flow for a new AI Browser context (a managed `ai-browser-context` keychain key).\nOpens a fresh remote browser session where the user logs in to their services; the returned live views\nare rendered in the Make UI — `pages` holds one per open page (tab or popup), `liveViewUrl` the\nsession-level fallback. The flow is then driven with the returned `setupId`: poll its status (passing\n`pagesVersion` back to wait for new pages), and complete or cancel it. The flow expires 15 minutes after\nit starts.\n\nAvailable only when the `is_ai_browser_contexts_enabled` feature flag is enabled.\n","security":[{"token":["keys:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["teamId","name"],"properties":{"teamId":{"type":"integer","minimum":1,"description":"The ID of the team the new browser context key will belong to."},"name":{"type":"string","minLength":1,"maxLength":128,"description":"Display name of the new browser context key."},"startUrl":{"type":"string","maxLength":2048,"pattern":"^https://[^\\s@/?#]+(?:[/?#]\\S*)?$","description":"Website to open in the session's first page before the live view is returned. Must be an `https`\nURL without credentials. Best effort: if it cannot be opened, the flow still starts on a blank\npage. It is not stored.\n"}}},"examples":{"create-setup":{"summary":"Start a create flow for a new browser context key","value":{"teamId":22,"name":"My shop logins","startUrl":"https://shop.example.com/login"}}}}}},"responses":{"200":{"description":"Setup flow started","content":{"application/json":{"schema":{"type":"object","required":["setupId","liveViewUrl","pagesVersion","pages"],"properties":{"setupId":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"Identifier of the setup flow. Only the user who started the flow can use it."},"liveViewUrl":{"type":"string","description":"URL of the live view of the session's first page; kept as a fallback for `pages`."},"pagesVersion":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"Identifies the current set of open pages: it changes whenever a page opens, closes, navigates or changes its title or favicon. Live-view URLs are left out because they are re-signed on every response. Send it back as the `pagesVersion` query parameter to wait for the next change."},"pages":{"type":"array","description":"Every open page (tab or popup) of the remote browser, each with its own live view. Match pages by `id`: a page keeps its `id` for its lifetime, while its title, URL and live-view URL change. The list is empty when no page is open.","items":{"type":"object","required":["id","title","url","faviconUrl","liveViewUrl"],"properties":{"id":{"type":"string","description":"Identifier of the page, stable while the page is open."},"title":{"type":"string","description":"Current title of the page; may be empty."},"url":{"type":"string","description":"Current URL of the page; `about:blank` for a page that has not navigated yet."},"faviconUrl":{"type":"string","description":"URL of the page favicon; empty when the page has none."},"liveViewUrl":{"type":"string","description":"URL of the interactive live view of this page. Re-signed on every response."}}}}}},"examples":{"create-setup":{"summary":"Setup flow started with one blank page","value":{"setupId":"3f9c2b7e4d1a8c6f5e0b9d2a7c4e1f8b6a3d0c9e2f7b4a1d8e5c2f9b6a3e0d7c","liveViewUrl":"https://connect.browserbase.com/devtools-fullscreen/inspector.html?sessionId=6ab3f1c2-4e5d-4f6a-8b9c-0d1e2f3a4b5c","pagesVersion":"c6ad53eda3aea52b8beeb89b91efd5a620942708382a1987a87cd8a11fb1ae88","pages":[{"id":"5E0C3F1A9B7D4E2C8A6F0B1D3C5E7A9B","title":"","url":"about:blank","faviconUrl":"","liveViewUrl":"https://connect.browserbase.com/devtools-fullscreen/inspector.html?sessionId=6ab3f1c2-4e5d-4f6a-8b9c-0d1e2f3a4b5c&pageId=5E0C3F1A9B7D4E2C8A6F0B1D3C5E7A9B"}]}}}}}},"400":{"description":"Validation error, or the feature flag is disabled (`IM903`)"},"401":{"description":"Unauthorized"},"403":{"description":"Missing the 'key add' team permission (`IM002`)"},"429":{"description":"Too many browser context setups in progress for the user (2) or the team (5)"},"500":{"description":"AI Browser is not configured on this environment"}}}},"/ai-browser/context-setups/{setupId}":{"get":{"tags":["AI"],"x-internal":true,"summary":"Get browser context setup status","description":"Polls the status of a running browser context setup flow. Only the user who started the flow\ncan read it. A flow that has expired, completed, or been cancelled responds with `404`.\n\n`pages` lists every open page (tab or popup) of the remote browser, each with its own live view,\nso a sign-in popup opened by the site can be shown as soon as it appears. The session-level\n`liveViewUrl` shows the first page and remains as a fallback. Live-view URLs are re-signed on\nevery response: match pages by `id` and detect changes with `pagesVersion`. A page the user no\nlonger needs can be closed with `DELETE /ai-browser/context-setups/{setupId}/pages/{pageId}`.\n\nTo wait for a change instead of polling in a tight loop, send `waitForChange` (1–20 seconds)\ntogether with the `pagesVersion` of the previous response. The request is then held and answered\nas soon as the open pages differ from that version (they are re-checked about once per second);\nif nothing changes, the unchanged status is returned once `waitForChange` seconds have passed. A\nrequest without `pagesVersion`, or with one that no longer matches, is answered right away. Send\nthe next request after each response. A flow that ends while a request is held responds with `404`.\n\nAvailable only when the `is_ai_browser_contexts_enabled` feature flag is enabled.\n","security":[{"token":["keys:read"]}],"parameters":[{"name":"setupId","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{64}$"},"description":"Identifier of the setup flow, as returned when the flow was started.","examples":{"single-tab":{"value":"3f9c2b7e4d1a8c6f5e0b9d2a7c4e1f8b6a3d0c9e2f7b4a1d8e5c2f9b6a3e0d7c"},"oauth-popup":{"value":"3f9c2b7e4d1a8c6f5e0b9d2a7c4e1f8b6a3d0c9e2f7b4a1d8e5c2f9b6a3e0d7c"}}},{"examples":{"single-tab":{"summary":"First request after the dialog opens","description":"No `pagesVersion` is known yet, so the current pages are returned right away.","value":20},"oauth-popup":{"summary":"Wait for the next change","description":"Held until the site opens a sign-in popup, then answered with both pages.","value":20}},"name":"waitForChange","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":20},"description":"Hold the request for up to this many seconds until the open pages of the setup session differ from `pagesVersion`. The request is answered as soon as they differ, or with the unchanged status once the time is up. Without this parameter the current status is returned right away."},{"examples":{"oauth-popup":{"summary":"Version of the single-tab response","value":"ace7ce872c510bc289f21d0152143dc82987ef622b8da97fcf04183341eba642"}},"name":"pagesVersion","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9a-f]{64}$"},"description":"The `pagesVersion` from the previous response. Used only together with `waitForChange`; when it is missing or no longer matches the current pages, the request is answered right away."}],"responses":{"200":{"description":"Setup flow status","content":{"application/json":{"schema":{"type":"object","required":["status","liveViewUrl","pagesVersion","pages"],"properties":{"status":{"type":"string","enum":["pending"],"description":"A readable flow is always pending; finished flows respond with `404`."},"liveViewUrl":{"type":"string","description":"URL of the live view of the session's first page; kept as a fallback for `pages`."},"pagesVersion":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"Identifies the current set of open pages: it changes whenever a page opens, closes, navigates or changes its title or favicon. Live-view URLs are left out because they are re-signed on every response. Send it back as the `pagesVersion` query parameter to wait for the next change."},"pages":{"type":"array","description":"Every open page (tab or popup) of the remote browser, each with its own live view. Match pages by `id`: a page keeps its `id` for its lifetime, while its title, URL and live-view URL change. The list is empty when no page is open.","items":{"type":"object","required":["id","title","url","faviconUrl","liveViewUrl"],"properties":{"id":{"type":"string","description":"Identifier of the page, stable while the page is open."},"title":{"type":"string","description":"Current title of the page; may be empty."},"url":{"type":"string","description":"Current URL of the page; `about:blank` for a page that has not navigated yet."},"faviconUrl":{"type":"string","description":"URL of the page favicon; empty when the page has none."},"liveViewUrl":{"type":"string","description":"URL of the interactive live view of this page. Re-signed on every response."}}}}}},"examples":{"single-tab":{"summary":"The user is on the site's login page","value":{"status":"pending","liveViewUrl":"https://connect.browserbase.com/devtools-fullscreen/inspector.html?sessionId=6ab3f1c2-4e5d-4f6a-8b9c-0d1e2f3a4b5c","pagesVersion":"ace7ce872c510bc289f21d0152143dc82987ef622b8da97fcf04183341eba642","pages":[{"id":"5E0C3F1A9B7D4E2C8A6F0B1D3C5E7A9B","title":"Log in | My Shop","url":"https://shop.example.com/login","faviconUrl":"https://shop.example.com/favicon.ico","liveViewUrl":"https://connect.browserbase.com/devtools-fullscreen/inspector.html?sessionId=6ab3f1c2-4e5d-4f6a-8b9c-0d1e2f3a4b5c&pageId=5E0C3F1A9B7D4E2C8A6F0B1D3C5E7A9B"}]}},"oauth-popup":{"summary":"The site opened a \"Sign in with Google\" popup","value":{"status":"pending","liveViewUrl":"https://connect.browserbase.com/devtools-fullscreen/inspector.html?sessionId=6ab3f1c2-4e5d-4f6a-8b9c-0d1e2f3a4b5c","pagesVersion":"10c56351c539c1a7c27f1041d731c0c48b551f535e6c41b437610686eac0b8cf","pages":[{"id":"5E0C3F1A9B7D4E2C8A6F0B1D3C5E7A9B","title":"Log in | My Shop","url":"https://shop.example.com/login","faviconUrl":"https://shop.example.com/favicon.ico","liveViewUrl":"https://connect.browserbase.com/devtools-fullscreen/inspector.html?sessionId=6ab3f1c2-4e5d-4f6a-8b9c-0d1e2f3a4b5c&pageId=5E0C3F1A9B7D4E2C8A6F0B1D3C5E7A9B"},{"id":"D41F8B2E6A0C4B7E9F3A5C1E7B9D2F40","title":"Sign in - Google Accounts","url":"https://accounts.google.com/v3/signin/identifier","faviconUrl":"https://accounts.google.com/favicon.ico","liveViewUrl":"https://connect.browserbase.com/devtools-fullscreen/inspector.html?sessionId=6ab3f1c2-4e5d-4f6a-8b9c-0d1e2f3a4b5c&pageId=D41F8B2E6A0C4B7E9F3A5C1E7B9D2F40"}]}}}}}},"400":{"description":"`waitForChange` is not an integer from 1 to 20 or `pagesVersion` is not a 64-character hex string (`SC400`), or the feature flag is disabled (`IM903`).\n","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"waitTooLong":{"summary":"waitForChange is above 20 seconds","value":{"message":"Bad Request","code":"SC400","suberrors":[{"message":"Expected integer to be less or equal to 20","name":"ValidationError"}]}}}}}},"401":{"description":"Authentication failed or the token lacks `keys:read`, or the setup flow was started by another user (`IM001`).\n"},"404":{"description":"Setup flow not found or expired, including a flow that ends while a request is held (`IM013`).\n","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"setupGone":{"summary":"The flow was completed, cancelled or has expired","value":{"message":"Entity not found.","code":"IM013","detail":"Setup not found or expired."}}}}}},"500":{"description":"AI Browser is not configured on this environment"},"502":{"description":"The request to Browserbase failed (`SC502`); send the request again."},"503":{"description":"The request to Browserbase timed out (`SC503`); send the request again."}}},"delete":{"tags":["AI"],"x-internal":true,"summary":"Cancel a browser context setup","description":"Cancels a running browser context setup flow: releases the remote browser session and, for a\ncreate flow, deletes the not-yet-adopted browser context. Only the user who started the flow\ncan cancel it.\n\nAvailable only when the `is_ai_browser_contexts_enabled` feature flag is enabled.\n","security":[{"token":["keys:write"]}],"parameters":[{"name":"setupId","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{64}$"},"description":"Identifier of the setup flow, as returned when the flow was started."}],"responses":{"200":{"description":"Setup flow cancelled","content":{"application/json":{"schema":{"type":"object","required":["setupId"],"properties":{"setupId":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"Identifier of the cancelled setup flow."}}},"examples":{"cancelled-setup":{"summary":"Setup flow cancelled","value":{"setupId":"3f9c2b7e4d1a8c6f5e0b9d2a7c4e1f8b6a3d0c9e2f7b4a1d8e5c2f9b6a3e0d7c"}}}}}},"400":{"description":"The feature flag is disabled (`IM903`)"},"401":{"description":"Unauthorized, or the setup flow was started by another user (`IM001`)"},"410":{"description":"Setup flow not found, expired, or already finished"},"500":{"description":"AI Browser is not configured on this environment"}}}},"/ai-browser/context-setups/{setupId}/complete":{"post":{"tags":["AI"],"x-internal":true,"summary":"Complete a browser context setup","description":"Completes a browser context setup flow after the user has finished logging in. Releases the remote\nbrowser session, waits for the browser state to be written back into the context, and then — for a\ncreate flow — creates the `ai-browser-context` key, or — for a refresh flow — returns the existing\nkey. A flow can be completed exactly once; only the user who started it can complete it.\n\nAvailable only when the `is_ai_browser_contexts_enabled` feature flag is enabled.\n","security":[{"token":["keys:write"]}],"parameters":[{"name":"setupId","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{64}$"},"description":"Identifier of the setup flow, as returned when the flow was started."}],"responses":{"200":{"description":"Setup completed; the browser context key","content":{"application/json":{"schema":{"type":"object","required":["id","name"],"properties":{"id":{"type":"integer","description":"The ID of the created (create flow) or refreshed (refresh flow) key."},"name":{"type":"string","description":"Display name of the key."}}},"examples":{"completed-setup":{"summary":"Browser context key after the setup completed","value":{"id":137,"name":"My shop logins"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The setup flow was started by another user, or the feature flag is disabled"},"404":{"description":"The refreshed key no longer exists"},"410":{"description":"Setup flow not found, expired, or already completed"},"500":{"description":"AI Browser is not configured on this environment"},"502":{"description":"The browser state was not persisted into the context in time"}}}},"/ai-browser/context-setups/{setupId}/pages/{pageId}":{"delete":{"tags":["AI"],"x-internal":true,"summary":"Close a browser context setup tab","description":"Closes one tab (page) of the remote browser of a running browser context setup flow, for example a\nsign-in popup the user no longer needs. Only the user who started the flow can close its tabs. The\nflow keeps running and its expiration does not change; the next status response no longer lists the\nclosed tab.\n\nBrowserbase cannot close a tab through its REST API, so the tab is closed with a single Chrome\nDevTools Protocol command (`Target.closeTarget`) over a connection that lasts only for that command.\n\nClosing is idempotent: a tab that is no longer open — a popup may close itself — responds with `200`\nwithout closing anything. The last open tab cannot be closed (`409`), because the login needs a tab\nto continue in. While another tab of the same flow is being closed, the request is rejected with\n`409` as well; send it again.\n\nAvailable only when the `is_ai_browser_contexts_enabled` feature flag is enabled.\n","security":[{"token":["keys:write"]}],"parameters":[{"name":"setupId","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{64}$"},"description":"Identifier of the setup flow, as returned when the flow was started.","examples":{"oauth-popup":{"value":"3f9c2b7e4d1a8c6f5e0b9d2a7c4e1f8b6a3d0c9e2f7b4a1d8e5c2f9b6a3e0d7c"}}},{"name":"pageId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"description":"Identifier of the tab to close, as listed in `pages` of the setup flow status.","examples":{"oauth-popup":{"summary":"The \"Sign in with Google\" popup of the status example","value":"D41F8B2E6A0C4B7E9F3A5C1E7B9D2F40"}}}],"responses":{"200":{"description":"The tab was closed, or was no longer open","content":{"application/json":{"schema":{"type":"object","required":["setupId","pageId"],"properties":{"setupId":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"Identifier of the setup flow."},"pageId":{"type":"string","description":"Identifier of the closed tab."}}},"examples":{"oauth-popup":{"summary":"The sign-in popup was closed","value":{"setupId":"3f9c2b7e4d1a8c6f5e0b9d2a7c4e1f8b6a3d0c9e2f7b4a1d8e5c2f9b6a3e0d7c","pageId":"D41F8B2E6A0C4B7E9F3A5C1E7B9D2F40"}}}}}},"400":{"description":"`setupId` is not a 64-character hex string or `pageId` is not 1–128 letters, digits, `-` or `_` (`SC400`), or the feature flag is disabled (`IM903`).\n","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"invalidPageId":{"summary":"pageId contains a character that is not allowed","value":{"message":"Bad Request","code":"SC400","suberrors":[{"message":"Expected string to match '^[A-Za-z0-9_-]+$'","name":"ValidationError"}]}},"featureDisabled":{"summary":"AI Browser Contexts are disabled on this environment","value":{"message":"Feature flag is disabled","code":"IM903","detail":"AI Browser Contexts are not enabled on this environment."}}}}}},"401":{"description":"Authentication failed or the token lacks `keys:write`, or the setup flow was started by another user (`IM001`).\n","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"anotherUsersFlow":{"summary":"The setup flow was started by another user","value":{"message":"Access denied","code":"IM001"}}}}}},"409":{"description":"The tab is the last open tab of the setup flow, or another tab of the same flow is being closed right now (`SC409`). Only the second case succeeds when the request is sent again.\n","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"lastTab":{"summary":"The last open tab must remain open","value":{"message":"Unexpected error occurred","code":"SC409","detail":"The last browser tab must remain open."}},"concurrentClose":{"summary":"Another tab of the flow is being closed","value":{"message":"Unexpected error occurred","code":"SC409","detail":"Another tab of this setup is being closed; try again."}}}}}},"410":{"description":"Setup flow not found, expired, or already finished (`SC410`).","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"setupGone":{"summary":"The flow was completed, cancelled or has expired","value":{"message":"Content has been permanently deleted","code":"SC410","detail":"Setup not found or expired."}}}}}},"500":{"description":"AI Browser is not configured on this environment"},"502":{"description":"Browserbase could not be reached, the browser session could not be connected to, or the tab was not closed (`SC502`); send the request again.\n"},"503":{"description":"Browserbase or the tab close timed out (`SC503`); send the request again."}}}},"/ai-browser/contexts/{keyId}/refresh-setups":{"post":{"tags":["AI"],"x-internal":true,"summary":"Start a browser context refresh setup","description":"Starts an interactive refresh flow for an existing AI Browser context key. Opens a remote browser\nsession attached to the key's existing context so the user can re-authenticate expired logins; the\ncontext (and the key) keep their identity. Like a create flow, the response carries one live view per\nopen page in `pages` plus the session-level `liveViewUrl`, and the flow is then driven with the returned\n`setupId`. The flow expires 15 minutes after it starts.\n\nAvailable only when the `is_ai_browser_contexts_enabled` feature flag is enabled.\n","security":[{"token":["keys:write"]}],"parameters":[{"name":"keyId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the `ai-browser-context` key whose context should be refreshed."}],"responses":{"200":{"description":"Refresh flow started","content":{"application/json":{"schema":{"type":"object","required":["setupId","liveViewUrl","pagesVersion","pages"],"properties":{"setupId":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"Identifier of the setup flow. Only the user who started the flow can use it."},"liveViewUrl":{"type":"string","description":"URL of the live view of the session's first page; kept as a fallback for `pages`."},"pagesVersion":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"Identifies the current set of open pages: it changes whenever a page opens, closes, navigates or changes its title or favicon. Live-view URLs are left out because they are re-signed on every response. Send it back as the `pagesVersion` query parameter to wait for the next change."},"pages":{"type":"array","description":"Every open page (tab or popup) of the remote browser, each with its own live view. Match pages by `id`: a page keeps its `id` for its lifetime, while its title, URL and live-view URL change. The list is empty when no page is open.","items":{"type":"object","required":["id","title","url","faviconUrl","liveViewUrl"],"properties":{"id":{"type":"string","description":"Identifier of the page, stable while the page is open."},"title":{"type":"string","description":"Current title of the page; may be empty."},"url":{"type":"string","description":"Current URL of the page; `about:blank` for a page that has not navigated yet."},"faviconUrl":{"type":"string","description":"URL of the page favicon; empty when the page has none."},"liveViewUrl":{"type":"string","description":"URL of the interactive live view of this page. Re-signed on every response."}}}}}},"examples":{"refresh-setup":{"summary":"Refresh flow started with one blank page","value":{"setupId":"3f9c2b7e4d1a8c6f5e0b9d2a7c4e1f8b6a3d0c9e2f7b4a1d8e5c2f9b6a3e0d7c","liveViewUrl":"https://connect.browserbase.com/devtools-fullscreen/inspector.html?sessionId=6ab3f1c2-4e5d-4f6a-8b9c-0d1e2f3a4b5c","pagesVersion":"c6ad53eda3aea52b8beeb89b91efd5a620942708382a1987a87cd8a11fb1ae88","pages":[{"id":"5E0C3F1A9B7D4E2C8A6F0B1D3C5E7A9B","title":"","url":"about:blank","faviconUrl":"","liveViewUrl":"https://connect.browserbase.com/devtools-fullscreen/inspector.html?sessionId=6ab3f1c2-4e5d-4f6a-8b9c-0d1e2f3a4b5c&pageId=5E0C3F1A9B7D4E2C8A6F0B1D3C5E7A9B"}]}}}}}},"400":{"description":"Validation error, or the feature flag is disabled (`IM903`)"},"401":{"description":"Unauthorized"},"403":{"description":"Missing the 'key edit' team permission (`IM002`)"},"404":{"description":"The key does not exist or is not an AI Browser context"},"429":{"description":"Too many browser context setups in progress for the user (2) or the team (5)"},"500":{"description":"AI Browser is not configured on this environment"}}}},"/ai-error-analysis":{"post":{"tags":["AI"],"x-internal":true,"summary":"Analyze scenario error with AI","description":"Proxies the error message and scenario blueprint to an AI-powered webhook that returns a human-readable explanation of what happened, why, and what to do next.","security":[{"token":["scenarios:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["errorMessage"],"properties":{"errorMessage":{"type":"string","maxLength":10000,"description":"The error message from the failed module execution."},"blueprint":{"type":"object","description":"The scenario blueprint JSON. Optional but recommended for more accurate analysis. The API trims designer-only metadata before forwarding it to the AI webhook."},"errorModuleId":{"type":"integer","minimum":1,"maximum":2147483647,"description":"Module identifier where the error occurred. When provided, only modules up to and including this module are forwarded in the minified blueprint."},"scenarioId":{"type":"number","description":"Scenario identifier when available (e.g. from the inspector)."},"executionId":{"oneOf":[{"type":"string"},{"type":"number"}],"description":"Execution identifier when available. The API accepts both string and number values and normalizes to string before forwarding to the AI webhook."},"suberrors":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":5000},"description":"Sub-error lines shown under the main exception name in the UI."},"errorType":{"type":"string","maxLength":500,"description":"Exception or error type name (e.g. the error class name)."}}},"example":{"errorMessage":"RuntimeError: The operation failed because the value is not a valid number.","errorModuleId":42,"blueprint":{"name":"My Scenario"}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"analysis":{"type":"object","description":"AI-generated analysis of the error.","properties":{"whatHappened":{"type":"string","description":"A short explanation of what went wrong."},"whyItHappened":{"type":"string","description":"The root cause of the error."},"whatToDoNext":{"type":"string","description":"Actionable steps to resolve the error."}}}}},"example":{"analysis":{"whatHappened":"The Create JSON module received a text value where it expected a number.","whyItHappened":"The field 'numero' is defined as a number type, but the incoming value is plain text.","whatToDoNext":"Wrap the mapped value with the toNumber function, e.g. {{toNumber(1.value)}}."}}}}},"400":{"description":"Validation error - missing or invalid errorMessage"},"401":{"description":"Unauthorized"},"502":{"description":"AI analysis webhook returned an error"},"503":{"description":"AI analysis webhook timed out"}}}},"/affiliate/partner-register":{"post":{"tags":["Affiliate"],"summary":"Register partner","description":"Registers the user as a partner in the affiliate program.","security":[{"token":["user:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"partnerCode":{"type":"string"},"paypalMeLink":{"type":"string"},"applyPromoToLink":{"type":"boolean","description":"Whether to automatically apply the partner's promo code to their referral link. Required — the UI form pre-ticks this checkbox, but the server does not substitute a default when the field is omitted."},"termsAndConditions":{"type":"boolean"}},"required":["partnerCode","paypalMeLink","applyPromoToLink","termsAndConditions"]},"example":{"partnerCode":"mypartnercode","paypalMeLink":"paypal.me/mypaypallink69","applyPromoToLink":true,"termsAndConditions":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/affiliate/stats":{"get":{"tags":["Affiliate"],"summary":"Get commission stats","description":"Retrieves graph data for commisions in the past year for the current user.","security":[{"token":["user:read"]}],"parameters":[{"name":"dateFrom","in":"query","schema":{"type":"string","format":"date"},"example":"2021-08-01"},{"name":"dateTo","in":"query","schema":{"type":"string","format":"date"},"example":"2021-11-01"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"stats":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"visits":{"type":"integer"},"registrations":{"type":"integer"},"commission":{"type":"number"}}}}}},"example":{"stats":[{"date":"2020-10-11","visits":12,"registrations":4,"commission":400},{"date":"2020-10-12","visits":3,"registrations":0,"commission":0},{"date":"2020-10-13","visits":0,"registrations":0,"commission":0},{"date":"2020-10-14","visits":1,"registrations":0,"commission":500},{"date":"2020-10-15","visits":6,"registrations":5,"commission":0},{"date":"2020-10-16","visits":7,"registrations":3,"commission":1000}]}}}}}}},"/affiliate/commissions":{"get":{"tags":["Affiliate"],"summary":"Get commissions","description":"Retrieves detailed data about individual commisions of the current user.","security":[{"token":["user:read"]}],"parameters":[{"name":"statusId","in":"query","schema":{"type":"integer"},"example":1},{"name":"dateFrom","in":"query","schema":{"type":"string","format":"date"},"example":"2021-08-01"},{"name":"dateTo","in":"query","schema":{"type":"string","format":"date"},"example":"2021-11-01"},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by.","example":"id"},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"commisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"organization_id":{"type":"integer"},"created":{"type":"string","format":"date-time"},"type":{"type":"string"},"status":{"type":"string"},"commission":{"type":"number"},"source":{"type":"string"},"payout_requested":{"type":"string","format":"date-time"},"payout_approved":{"type":"string","format":"date-time"},"payout_realized":{"type":"string","format":"date-time"}}}}}},"example":{"commissions":[{"id":1,"organization_id":3,"created":"2021-10-01 12:19:49.227869","type":"Registration","status":"Registration","commission":null,"source":"http://foo.bar","payout_requested":null,"payout_approved":null,"payout_realized":null},{"id":2,"organization_id":3,"created":"2021-10-01 12:19:49.227869","type":"Payment","status":"Available","commission":300,"source":null,"payout_requested":null,"payout_approved":null,"payout_realized":null},{"id":3,"organization_id":3,"created":"2021-11-21 12:19:49.227869","type":"Payment","status":"Requested","commission":500,"source":null,"payout_requested":"2021-12-21 12:19:49.227869","payout_approved":null,"payout_realized":null},{"id":4,"organization_id":4,"created":"2021-11-21 12:19:49.227869","type":"Payment","status":"Approved","commission":658.5,"source":null,"payout_requested":"2021-12-01 12:19:49.227869","payout_approved":"2021-12-03 12:19:49.227869","payout_realized":null},{"id":5,"partner_id":1,"organization_id":4,"created":"2021-11-21 12:19:49.227869","type":"Payment","status":"Paid","commission":300,"source":null,"payout_requested":"2021-02-01 12:19:49.227869","payout_approved":"2021-02-03 12:19:49.227869","payout_realized":"2021-02-04 12:19:49.227869"}]}}}}}}},"/affiliate/commission-info":{"get":{"tags":["Affiliate"],"summary":"Get commission info","description":"Retrieves general info about accumulated commissions of the current user.","security":[{"token":["user:read"]}],"parameters":[{"name":"dateFrom","in":"query","schema":{"type":"string","format":"date"},"example":"2021-08-01"},{"name":"dateTo","in":"query","schema":{"type":"string","format":"date"},"example":"2021-11-01"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"partnerCode":{"type":"string"},"availablePayout":{"type":"number"},"availablePayoutDistinctOrgs":{"type":"integer"},"isPayoutRequested":{"type":"boolean"},"isPayoutAvailable":{"type":"boolean"},"minimumPayout":{"type":"number"},"minimumOrganizations":{"type":"integer"},"earningsRange":{"type":"number"},"earningsTotal":{"type":"number"},"usersBroughtPayingRange":{"type":"integer"},"usersBroughtPayingTotal":{"type":"integer"},"usersBroughtAllRange":{"type":"integer"},"usersBroughtAllTotal":{"type":"integer"},"orgsBroughtPayingRange":{"type":"integer"},"orgsBroughtPayingTotal":{"type":"integer"},"orgsBroughtAllRange":{"type":"integer"},"orgsBroughtAllTotal":{"type":"integer"},"conversionRateUsersPayingRange":{"type":"number"},"conversionRateUsersPayingTotal":{"type":"number"},"conversionRateUsersAllRange":{"type":"number"},"conversionRateUsersAllTotal":{"type":"number"},"conversionRateOrgsPayingRange":{"type":"number"},"conversionRateOrgsPayingTotal":{"type":"number"},"conversionRateOrgsAllRange":{"type":"number"},"conversionRateOrgsAllTotal":{"type":"number"}}},"example":{"partnerCode":"mypartnercode","availablePayout":300.5,"availablePayoutDistinctOrgs":3,"isPayoutRequested":false,"isPayoutAvailable":true,"minimumPayout":100,"minimumOrganizations":3,"earningsRange":200.5,"earningsTotal":3333.45,"usersBroughtPayingRange":1,"usersBroughtPayingTotal":2,"usersBroughtAllRange":5,"usersBroughtAllTotal":12,"orgsBroughtPayingRange":2,"orgsBroughtPayingTotal":3,"orgsBroughtAllRange":8,"orgsBroughtAllTotal":16,"conversionRateUsersPayingRange":0.25,"conversionRateUsersPayingTotal":0.1875,"conversionRateUsersAllRange":0.11,"conversionRateUsersAllTotal":0.05,"conversionRateOrgsPayingRange":0.25,"conversionRateOrgsPayingTotal":0.1875,"conversionRateOrgsAllRange":0.11,"conversionRateOrgsAllTotal":0.05}}}}}}},"/affiliate/payout-request":{"post":{"tags":["Affiliate"],"summary":"Request payout","description":"Request a payout of available commissions.","security":[{"token":["user:write"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/audit-logs/organization/{organizationId}":{"get":{"operationId":"getOrganizationAuditLogs","tags":["Audit logs"],"summary":"List organization audit logs","deprecated":true,"description":"Gets a list of all audit log entries for the specified organization.\n\nThe audit log entries in the response are sorted by the `triggeredAt` property in descending order by default. You can use pagination to navigate through a large number of entries.\n\nYou can get the audit log entries only for organizations in which you have the \"Admin\" or \"Owner\" roles. Otherwise, you get the 403 error.\n\n**Deprecated.** Use `GET /audit-logs/v2/organization/{organizationId}` instead. That endpoint requires the\n`audit-logs:read` scope on the API token.\n","parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11},{"name":"team","in":"query","description":"The identification of the teams for which you want to get the audit log entries. You can use either team IDs or team names.\n\nThe team name can contain any valid UTF8 symbols and spaces.\n","schema":{"oneOf":[{"type":"string","example":"team 1"},{"type":"integer","example":1},{"type":"array","items":{"type":"string"},"example":["team 1","team 2"]},{"type":"array","items":{"type":"integer"},"example":[1,2,3]}]}},{"name":"dateFrom","in":"query","description":"Use the `dateFrom` parameter to get audit log entries from the specified date or newer. Specify the date in the YYYY-MM-DD format.","schema":{"type":"string","format":"date"},"example":"2021-09-23"},{"name":"dateTo","in":"query","description":"Use the `dateTo` parameter to get audit log entries until the specified date or older. Specify the date in the YYYY-MM-DD format.","schema":{"type":"string","format":"date"},"example":"2021-09-24"},{"description":"The list of events for which you want to get audit log entries. To specify multiple events, use the array notation like: `GET /audit-logs/organization/{organizationId}?event[0]=key_created&event[1]=connection_created`.\n\nYou can check the list of supported events with the API call `GET /audit-logs/organization/{organizationId}/filters` in the `events` array in the response.\n","name":"event","in":"query","schema":{"oneOf":[{"type":"string","example":"webhook_disabled"},{"type":"array","items":{"type":"string"},"example":["webhook_disabled","webhook_updated","webhook_deleted"]}]},"examples":{"select-events":{"value":["key_created","connection_created"]}}},{"name":"author","in":"query","description":"The identification of the users for whose actions you want to get the audit log entries. You can use either user IDs or user names.\n\nThe user name can contain any valid UTF8 symbols and spaces.\n","schema":{"oneOf":[{"type":"string","example":"author 1"},{"type":"integer","example":1},{"type":"array","items":{"type":"string"},"example":["author 1","author 2"]},{"type":"array","items":{"type":"integer"},"example":[1,2,3]}]}},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The number of entities you want to skip before getting entities you want."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"The maximum number of entities you want to get in the response."},{"name":"pg[last]","in":"query","schema":{"type":"integer"},"example":10,"description":"The last retrieved key. In response, you get only entries that follow after the key."},{"schema":{"type":"string","enum":["createdAt","triggeredAt","eventName","organization","team","actor","targetId"]},"description":"Specify the response property values that Make will use to sort the audit log entries in the response. The default is `triggeredAt`.","name":"pg[sortBy]","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"name":"pg[sortDir]","in":"query","description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[returnTotalCount]","in":"query","schema":{"type":"boolean"},"description":"Set to `true` to get also the total number of audit log entries in the response.","example":true}],"responses":{"200":{"description":"Audit log entries for the specified organization.","content":{"application/json":{"schema":{"type":"object","properties":{"auditLogs":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"uuid":{"type":"string"},"createdAt":{"type":"string"},"triggeredAt":{"type":"integer"},"organizationId":{"type":"integer"},"organization":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"eventName":{"type":"string"},"team":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"actor":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"anonymized":{"type":"boolean","description":"Present and `true` when the actor's audit logs were anonymized. The actor then has no `name` or `email`, only `id`."}}},"targetId":{"type":"string"},"version":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}}}}}},"pg":{"allOf":[{"type":"object","properties":{"last":{"type":"string","description":"Shown only when using the `last` based pagination."},"showLast":{"type":"boolean","description":"Shown only when using the `last` based pagination."},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer","description":"Shown only when using the `offset` based pagination."}}},{"type":"object","properties":{"totalCount":{"type":"integer","description":"The number of audit log entries for the organization."}}}]}}},"examples":{"select-all":{"summary":"Default selection","description":"With no event specified in the `event` array, the response contains all audit log events.","value":{"auditLogs":{"uuid":"c37c7292-35cd-4dc4-9113-21b23beaea7d","createdAt":"2024-05-24T14:22:16.879Z","triggeredAt":"2024-04-19T12:05:22Z","organizationId":3,"organization":{"id":3,"name":"John Doe's Organization"},"eventName":"webhook_created","team":{"id":212,"name":"John Doe's Team"},"actor":{"id":212,"name":"John Doe","email":"john.doe@whois.com"},"targetId":"3000","version":{"from":"1.0.0","to":"1.0.1"}},"pg":{"sortBy":"triggeredAt","sortDir":"desc","offset":0,"limit":100,"totalCount":60}}},"select-events":{"summary":"Select events","description":"Use the `event` parameter to select events for which you want to get audit logs. To specify multiple events, use the array notation like: `GET /audit-logs/organization/{organizationId}?event[0]=key_created&event[1]=connection_created`.","value":{"auditLogs":{"uuid":"c37c7292-35cd-4dc4-9113-21b23beaea7d","createdAt":"2024-05-24T14:22:16.879Z","triggeredAt":"2024-04-19T12:05:22Z","organizationId":3,"organization":{"id":3,"name":"John Doe's Organization"},"eventName":"connection_created","team":{"id":212,"name":"John Doe's Team"},"actor":{"id":212,"name":"John Doe","email":"john.doe@whois.com"},"targetId":"3000","version":{"from":"1.0.0","to":"1.0.1"}},"pg":{"sortBy":"triggeredAt","sortDir":"desc","offset":0,"limit":100,"totalCount":60}}}}}}}}}},"/audit-logs/organization/{organizationId}/filters":{"get":{"operationId":"getOrganizationAuditLogsFilters","tags":["Audit logs"],"summary":"Get organization audit log filters","deprecated":true,"description":"Gets available audit logs filters for the organization.\n\nYou can use the data in the response to filter audit log entries you get from the `GET /audit-logs/organization/{organizationId}` endpoint.\n\n**Deprecated.** Use `GET /audit-logs/v2/organization/{organizationId}/filters` instead. That endpoint requires the\n`audit-logs:read` scope on the API token.\n","parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11}],"responses":{"200":{"description":"Successfully retrieve of available audit logs filters for the organization","content":{"application/json":{"schema":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"anonymized":{"type":"boolean","description":"Present and `true` when the user's audit logs were anonymized. The user then has no `name` or `email`, only `id`."}}}},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"events":{"type":"array","items":{"type":"object","properties":{"header":{"type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}}}}}}}}},"example":{"teams":[{"id":1,"name":"John Doe's Team"}],"users":[{"id":1,"name":"John Doe","email":"john.doe@whois.com"},{"id":2,"anonymized":true}],"events":[{"header":"Webhooks","items":[{"label":"Webhook created","value":"webhook_created"},{"label":"Webhook updated","value":"webhook_updated"}]}]}}}}}}},"/audit-logs/team/{teamId}":{"get":{"operationId":"getTeamAuditLogs","tags":["Audit logs"],"summary":"List team audit logs","deprecated":true,"description":"Gets a list of all audit log entries for the specified team.\n\nThe audit log entries in the response are sorted by the `triggeredAt` property in descending order by default. You can use pagination to navigate through a large number of entries.\n\nYou can get the audit log entries only for teams in which you have the \"Team Admin\" role. Otherwise, you get the 403 error.\n\n**Deprecated.** Use `GET /audit-logs/v2/team/{teamId}` instead. That endpoint requires the\n`audit-logs:read` scope on the API token.\n","parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":11},{"name":"dateFrom","in":"query","description":"Use the `dateFrom` parameter to get audit log entries from the specified date or newer. Specify the date in the YYYY-MM-DD format.","schema":{"type":"string","format":"date"},"example":"2021-09-23"},{"name":"dateTo","in":"query","description":"Use the `dateTo` parameter to get audit log entries until the specified date or older. Specify the date in the YYYY-MM-DD format.","schema":{"type":"string","format":"date"},"example":"2021-09-24"},{"description":"The list of events for which you want to get audit log entries. To specify multiple events, use the array notation like: `GET /audit-logs/team/{teamId}?event[0]=key_created&event[1]=connection_created`.\n\nYou can check the list of supported events with the API call `GET /audit-logs/team/{teamId}/filters` in the `events` array in the response.\n","name":"event","in":"query","schema":{"oneOf":[{"type":"string","example":"webhook_disabled"},{"type":"array","items":{"type":"string"},"example":["webhook_disabled","webhook_updated","webhook_deleted"]}]},"examples":{"select-events":{"value":["key_created","connection_created"]}}},{"name":"author","in":"query","description":"The identification of the users for whose actions you want to get the audit log entries. You can use either user IDs or user names.\n\nThe user name can contain any valid UTF8 symbols and spaces.\n","schema":{"oneOf":[{"type":"string","example":"author 1"},{"type":"integer","example":1},{"type":"array","items":{"type":"string"},"example":["author 1","author 2"]},{"type":"array","items":{"type":"integer"},"example":[1,2,3]}]}},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The number of entities you want to skip before getting entities you want."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"The maximum number of entities you want to get in the response."},{"name":"pg[last]","in":"query","schema":{"type":"integer"},"example":10,"description":"The last retrieved key. In response, you get only entries that follow after the key."},{"schema":{"type":"string","enum":["createdAt","triggeredAt","eventName","organization","team","actor","targetId"]},"description":"Specify the response property values that Make will use to sort the audit log entries in the response. The default is `triggeredAt`.","name":"pg[sortBy]","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"name":"pg[sortDir]","in":"query","description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[returnTotalCount]","in":"query","schema":{"type":"boolean"},"description":"Set to `true` to get also the total number of audit log entries in the response.","example":true}],"responses":{"200":{"description":"Audit log entries for the specified team.","content":{"application/json":{"schema":{"type":"object","properties":{"auditLogs":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"uuid":{"type":"string"},"createdAt":{"type":"string"},"triggeredAt":{"type":"integer"},"organizationId":{"type":"integer"},"organization":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"eventName":{"type":"string"},"team":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"actor":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"anonymized":{"type":"boolean","description":"Present and `true` when the actor's audit logs were anonymized. The actor then has no `name` or `email`, only `id`."}}},"targetId":{"type":"string"},"version":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}}}}}},"pg":{"allOf":[{"type":"object","properties":{"last":{"type":"string","description":"Shown only when using the `last` based pagination."},"showLast":{"type":"boolean","description":"Shown only when using the `last` based pagination."},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer","description":"Shown only when using the `offset` based pagination."}}},{"type":"object","properties":{"totalCount":{"type":"integer","description":"The number of audit log entries for the organization."}}}]}}},"examples":{"select-all":{"summary":"Default selection","description":"With no event specified in the `event` array, the response contains all audit log events.","value":{"auditLogs":{"uuid":"c37c7292-35cd-4dc4-9113-21b23beaea7d","createdAt":"2024-05-24T14:22:16.879Z","triggeredAt":"2024-04-19T12:05:22Z","organizationId":3,"organization":{"id":3,"name":"John Doe's Organization"},"eventName":"webhook_created","team":{"id":212,"name":"John Doe's Team"},"actor":{"id":212,"name":"John Doe","email":"john.doe@whois.com"},"targetId":"3000","version":{"from":"1.0.0","to":"1.0.1"}},"pg":{"sortBy":"triggeredAt","sortDir":"desc","offset":0,"limit":100,"totalCount":60}}},"select-events":{"summary":"Select events","description":"Use the `event` parameter to select events for which you want to get audit logs. To specify multiple events, use the array notation like: `GET /audit-logs/organization/{organizationId}?event[0]=key_created&event[1]=connection_created`.","value":{"auditLogs":{"uuid":"c37c7292-35cd-4dc4-9113-21b23beaea7d","createdAt":"2024-05-24T14:22:16.879Z","triggeredAt":"2024-04-19T12:05:22Z","organizationId":3,"organization":{"id":3,"name":"John Doe's Organization"},"eventName":"connection_created","team":{"id":212,"name":"John Doe's Team"},"actor":{"id":212,"name":"John Doe","email":"john.doe@whois.com"},"targetId":"3000","version":{"from":"1.0.0","to":"1.0.1"}},"pg":{"sortBy":"triggeredAt","sortDir":"desc","offset":0,"limit":100,"totalCount":60}}}}}}}}}},"/audit-logs/team/{teamId}/filters":{"get":{"operationId":"getTeamAuditLogsFilters","tags":["Audit logs"],"summary":"Get organization audit log filters","deprecated":true,"description":"Gets available audit logs filters for the team.\n\nYou can use the data in the response to filter audit log entries you get from the `GET /audit-logs/team/{teamId}` endpoint.\n\n**Deprecated.** Use `GET /audit-logs/v2/team/{teamId}/filters` instead. That endpoint requires the\n`audit-logs:read` scope on the API token.\n","parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":11}],"responses":{"200":{"description":"Successfully retried available audit logs filters for the team","content":{"application/json":{"schema":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"anonymized":{"type":"boolean","description":"Present and `true` when the user's audit logs were anonymized. The user then has no `name` or `email`, only `id`."}}}},"events":{"type":"array","items":{"type":"object","properties":{"header":{"type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}}}}}}}}},"example":{"users":[{"id":1,"name":"John Doe","email":"john.doe@whois.com"},{"id":2,"anonymized":true}],"events":[{"header":"Webhooks","items":[{"label":"Webhook created","value":"webhook_created"},{"label":"Webhook updated","value":"webhook_updated"}]}]}}}}}}},"/audit-logs/{organizationId}/{uuid}":{"get":{"operationId":"getAuditLogDetail","tags":["Audit logs"],"summary":"Get audit log detail","deprecated":true,"description":"Gets details of the audit log entry with the specified UUID.\n\n**Deprecated.** Use `GET /audit-logs/v2/{organizationId}/{uuid}` instead. That endpoint requires the\n`audit-logs:read` scope on the API token.\n","parameters":[{"name":"uuid","in":"path","schema":{"type":"string"},"description":"The UUID of the audit log entry.","required":true,"example":"c37c7292-35cd-4dc4-9113-21b23beaea7d"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"type":"object","additionalProperties":false,"properties":{"uuid":{"type":"string"},"createdAt":{"type":"string"},"triggeredAt":{"type":"integer"},"organizationId":{"type":"integer"},"organization":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"eventName":{"type":"string"},"team":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"actor":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"anonymized":{"type":"boolean","description":"Present and `true` when the actor's audit logs were anonymized. The actor then has no `name` or `email`, only `id`."}}},"targetId":{"type":"string"},"version":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}}}}},{"type":"object","properties":{"details":{"type":"object","additionalProperties":true,"description":"Event-specific data. When a user named here was anonymized, their personal data is removed and `anonymized` is `true`."}}}]},"example":{"details":{"webhookName":"Webhook from John Doe","webhookType":"http"},"uuid":"c37c7292-35cd-4dc4-9113-21b23beaea7d","createdAt":"2024-05-24T14:22:16.879Z","triggeredAt":"2024-04-19T12:05:22Z","organizationId":3,"organization":{"id":3,"name":"John Doe's Organization"},"eventName":"webhook_created","team":{"id":212,"name":"John Doe's Team"},"actor":{"id":212,"name":"John Doe","email":"john.doe@whois.com"},"targetId":"3000","version":{"from":"1.0.0","to":"1.0.1"}}}}}}}},"/audit-logs/v2/organization/{organizationId}":{"get":{"operationId":"getOrganizationAuditLogsV2","tags":["Audit logs"],"summary":"List organization audit logs","description":"Gets a list of all audit log entries for the specified organization.\n\nRequires the `audit-logs:read` scope on the API token.\n\nThe audit log entries in the response are sorted by the `triggeredAt` property in ascending order by default. Use the `pg` object to change the sorting or navigate through a large result set. For cursor pagination, pass the last entry's `imtId` as `pg[last]`.\n\nYou can get the audit log entries only for organizations in which you have the \"Admin\" or \"Owner\" roles. Otherwise, you get the 403 error.\n","security":[{"token":["audit-logs:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The positive ID of the organization.","schema":{"type":"integer","minimum":1},"example":11},{"name":"team","in":"query","description":"Filter by one or more positive team IDs or team names. Repeat the parameter to provide multiple values.","style":"form","explode":true,"schema":{"oneOf":[{"type":"string"},{"type":"integer","minimum":1},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"integer","minimum":1}]}}]},"examples":{"teams":{"value":[212,"Operations"]}}},{"name":"dateFrom","in":"query","description":"Return entries triggered at or after this ISO 8601 date, ISO 8601 date-time, or Unix timestamp in milliseconds.","schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"},{"type":"integer","format":"int64"}]},"examples":{"date":{"value":"2026-09-01"},"date-time":{"value":"2026-09-01T12:00:00.000Z"},"timestamp":{"value":1788264000000}}},{"name":"dateTo","in":"query","description":"Return entries triggered at or before this ISO 8601 date, ISO 8601 date-time, or Unix timestamp in milliseconds.","schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"},{"type":"integer","format":"int64"}]},"examples":{"date":{"value":"2026-09-22"},"date-time":{"value":"2026-09-22T23:59:59.999Z"},"timestamp":{"value":1790121599999}}},{"name":"event","in":"query","description":"Filter by one or more event names. Repeat the parameter to provide multiple values.","style":"form","explode":true,"schema":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"examples":{"events":{"value":["key_created","connection_created"]}}},{"name":"author","in":"query","description":"Filter by one or more positive actor IDs, names, or email addresses. Repeat the parameter to provide multiple values.","style":"form","explode":true,"schema":{"oneOf":[{"type":"string"},{"type":"integer","minimum":1},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"integer","minimum":1}]}}]},"examples":{"authors":{"value":[212,"john.doe@example.com"]}}},{"name":"pg","in":"query","description":"Pagination and sorting options encoded as a deep object, for example `pg[limit]=100&pg[offset]=0`.","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":false,"default":{},"properties":{"sortBy":{"type":"string","description":"The audit-log property used for sorting.","enum":["triggeredAt","createdAt","eventName","targetId"],"default":"triggeredAt"},"sortDir":{"type":"string","description":"The sort direction.","enum":["asc","desc"],"default":"asc"},"returnTotalCount":{"type":"boolean","description":"When true, the response's `pg` object includes `totalCount`.","default":false},"last":{"type":"string","description":"The `imtId` of the last entry from the previous page. When provided, `offset` is ignored.","pattern":"^[0-9]{13}_[^_]+$","example":"1788264000000_c37c729235cd4dc4911323b23beaea7d"},"limit":{"type":"integer","description":"The maximum number of entries to return.","minimum":1,"maximum":10000,"default":1000},"offset":{"type":"integer","description":"The number of matching entries to skip. This value is ignored when `last` is provided.","minimum":0,"default":0}}},"examples":{"first-page":{"value":{"sortBy":"triggeredAt","sortDir":"desc","returnTotalCount":true,"limit":100,"offset":0}},"cursor-page":{"value":{"sortBy":"triggeredAt","sortDir":"desc","last":"1788264000000_c37c729235cd4dc4911323b23beaea7d","limit":100}}}}],"responses":{"200":{"description":"Audit log entries for the specified organization.","content":{"application/json":{"schema":{"type":"object","required":["auditLogs","pg"],"properties":{"auditLogs":{"type":"array","items":{"allOf":[{"type":"object","required":["uuid","createdAt","triggeredAt","eventName","actor","targetId"],"properties":{"uuid":{"type":"string","description":"The UUIDv4 of the audit log entry. Hyphens are optional.","pattern":"^[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}$"},"createdAt":{"type":"string","format":"date-time","description":"When Auditman stored the entry."},"triggeredAt":{"type":"string","format":"date-time","description":"When the audited event occurred."},"organizationId":{"type":"integer","minimum":1},"organization":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string"}}},"eventName":{"type":"string"},"team":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string"}}},"actor":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string"},"email":{"type":"string"},"anonymized":{"type":"boolean","description":"Present and `true` when the user's audit logs were anonymized. The user then has no `name` or `email`, only `id`."}}},"targetId":{"type":"string"},"version":{"type":"object","required":["to"],"properties":{"from":{"type":"string"},"to":{"type":"string"}}}}},{"type":"object","properties":{"imtId":{"type":"string","description":"Cursor identifier to pass as `pg[last]` when requesting the next page.","pattern":"^[0-9]{13}_[^_]+$"}}}]}},"pg":{"type":"object","required":["limit"],"properties":{"sortBy":{"type":"string","enum":["triggeredAt","createdAt","eventName","targetId"]},"sortDir":{"type":"string","enum":["asc","desc"]},"returnTotalCount":{"type":"boolean"},"last":{"type":"string","pattern":"^[0-9]{13}_[^_]+$"},"limit":{"type":"integer","minimum":1,"maximum":10000},"offset":{"type":"integer","minimum":0},"totalCount":{"type":"integer","minimum":0}}}}},"examples":{"default":{"summary":"Audit log entries using the default pagination options","value":{"auditLogs":[{"uuid":"c37c729235cd4dc4911321b23beaea7d","imtId":"1713528322000_c37c729235cd4dc4911321b23beaea7d","createdAt":"2024-05-24T14:22:16.879Z","triggeredAt":"2024-04-19T12:05:22.000Z","organizationId":3,"organization":{"id":3,"name":"John's Organization"},"eventName":"webhook_created","team":{"id":212,"name":"Operations"},"actor":{"id":212,"name":"John Doe","email":"john.doe@example.com"},"targetId":"3000","version":{"from":"1.0.0","to":"1.0.1"}},{"uuid":"5a1f0c2e8d3b4e6f9a7c1b2d3e4f5a6b","imtId":"1713528000000_5a1f0c2e8d3b4e6f9a7c1b2d3e4f5a6b","createdAt":"2024-05-24T14:22:16.879Z","triggeredAt":"2024-04-19T12:00:00.000Z","organizationId":3,"organization":{"id":3,"name":"John's Organization"},"eventName":"webhook_deleted","team":{"id":212,"name":"Operations"},"actor":{"id":213,"anonymized":true},"targetId":"2999"}],"pg":{"sortDir":"asc","returnTotalCount":false,"limit":1000,"offset":0}}}}}}},"400":{"description":"An identifier, date, filter, pagination, or sorting value is invalid (`SC400`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"invalidRequest":{"summary":"Invalid request parameter","value":{"code":"SC400","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"401":{"description":"Authentication failed, the authorization lacks `audit-logs:read`, or an organization-bound authorization cannot access the requested entity (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"missingScope":{"summary":"Authorization lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: audit-logs:read"}}}}}},"402":{"description":"The organization license does not include the audit logs feature (`IM027`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"licenseLimit":{"summary":"Audit logs are not included in the organization license","value":{"code":"IM027","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"403":{"description":"The caller lacks permission to view audit logs for the requested organization or team, or the audit log entry belongs to a different organization (`SC403`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"permissionDenied":{"summary":"Caller lacks permission to view the requested audit logs","value":{"code":"SC403","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"404":{"description":"The requested organization, team, or audit log entry does not exist (`SC404`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"resourceNotFound":{"summary":"Requested audit-log resource does not exist","value":{"code":"SC404","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}}}}},"/audit-logs/v2/organization/{organizationId}/filters":{"get":{"operationId":"getOrganizationAuditLogsFiltersV2","tags":["Audit logs"],"summary":"Get organization audit log filters","description":"Gets available audit logs filters for the organization.\n\nRequires the `audit-logs:read` scope on the API token.\n\nUse the data in the response to build filters for the `GET /audit-logs/v2/organization/{organizationId}` endpoint: `users` and `teams` supply the values for the `author` and `team` parameters, and `events` supplies the values for the `event` parameter. The endpoint takes no query parameters.\n","security":[{"token":["audit-logs:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The positive ID of the organization.","schema":{"type":"integer","minimum":1},"example":11}],"responses":{"200":{"description":"Available audit logs filters for the specified organization.","content":{"application/json":{"schema":{"type":"object","required":["users","teams","events"],"properties":{"users":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string"},"email":{"type":"string"},"anonymized":{"type":"boolean","description":"Present and `true` when the user's audit logs were anonymized. The user then has no `name` or `email`, only `id`."}}}},"teams":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string"}}}},"events":{"anyOf":[{"type":"array","items":{"type":"object","required":["header","items"],"properties":{"header":{"type":"string"},"items":{"type":"array","minItems":1,"items":{"type":"object","required":["label","value"],"properties":{"label":{"type":"string"},"value":{"type":"string"}}}}}}},{"type":"array","maxItems":1,"items":{"type":"object","required":["items"],"properties":{"items":{"type":"array","minItems":1,"items":{"type":"object","required":["label","value"],"properties":{"label":{"type":"string"},"value":{"type":"string"}}}}}}}]}}},"examples":{"default":{"summary":"Organization audit-log filter options","value":{"users":[{"id":212,"name":"John Doe","email":"john.doe@example.com"},{"id":213,"anonymized":true}],"teams":[{"id":212,"name":"Operations"}],"events":[{"header":"Webhooks","items":[{"label":"Webhook created","value":"webhook_created"},{"label":"Webhook updated","value":"webhook_updated"}]}]}}}}}},"400":{"description":"An identifier, date, filter, pagination, or sorting value is invalid (`SC400`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"invalidRequest":{"summary":"Invalid request parameter","value":{"code":"SC400","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"401":{"description":"Authentication failed, the authorization lacks `audit-logs:read`, or an organization-bound authorization cannot access the requested entity (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"missingScope":{"summary":"Authorization lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: audit-logs:read"}}}}}},"402":{"description":"The organization license does not include the audit logs feature (`IM027`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"licenseLimit":{"summary":"Audit logs are not included in the organization license","value":{"code":"IM027","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"403":{"description":"The caller lacks permission to view audit logs for the requested organization or team, or the audit log entry belongs to a different organization (`SC403`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"permissionDenied":{"summary":"Caller lacks permission to view the requested audit logs","value":{"code":"SC403","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"404":{"description":"The requested organization, team, or audit log entry does not exist (`SC404`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"resourceNotFound":{"summary":"Requested audit-log resource does not exist","value":{"code":"SC404","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}}}}},"/audit-logs/v2/team/{teamId}":{"get":{"operationId":"getTeamAuditLogsV2","tags":["Audit logs"],"summary":"List team audit logs","description":"Gets a list of all audit log entries for the specified team.\n\nRequires the `audit-logs:read` scope on the API token.\n\nThe audit log entries in the response are sorted by the `triggeredAt` property in ascending order by default. Use the `pg` object to change the sorting or navigate through a large result set. For cursor pagination, pass the last entry's `imtId` as `pg[last]`.\n\nYou can get the audit log entries only for teams in which you have the \"Team Admin\" role. Otherwise, you get the 403 error.\n","security":[{"token":["audit-logs:read"]}],"parameters":[{"name":"teamId","in":"path","required":true,"description":"The positive ID of the team.","schema":{"type":"integer","minimum":1},"example":212},{"name":"dateFrom","in":"query","description":"Return entries triggered at or after this ISO 8601 date, ISO 8601 date-time, or Unix timestamp in milliseconds.","schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"},{"type":"integer","format":"int64"}]},"examples":{"date":{"value":"2026-09-01"},"date-time":{"value":"2026-09-01T12:00:00.000Z"},"timestamp":{"value":1788264000000}}},{"name":"dateTo","in":"query","description":"Return entries triggered at or before this ISO 8601 date, ISO 8601 date-time, or Unix timestamp in milliseconds.","schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"},{"type":"integer","format":"int64"}]},"examples":{"date":{"value":"2026-09-22"},"date-time":{"value":"2026-09-22T23:59:59.999Z"},"timestamp":{"value":1790121599999}}},{"name":"event","in":"query","description":"Filter by one or more event names. Repeat the parameter to provide multiple values.","style":"form","explode":true,"schema":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"examples":{"events":{"value":["key_created","connection_created"]}}},{"name":"author","in":"query","description":"Filter by one or more positive actor IDs, names, or email addresses. Repeat the parameter to provide multiple values.","style":"form","explode":true,"schema":{"oneOf":[{"type":"string"},{"type":"integer","minimum":1},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"integer","minimum":1}]}}]},"examples":{"authors":{"value":[212,"john.doe@example.com"]}}},{"name":"pg","in":"query","description":"Pagination and sorting options encoded as a deep object, for example `pg[limit]=100&pg[offset]=0`.","style":"deepObject","explode":true,"schema":{"type":"object","additionalProperties":false,"default":{},"properties":{"sortBy":{"type":"string","description":"The audit-log property used for sorting.","enum":["triggeredAt","createdAt","eventName","targetId"],"default":"triggeredAt"},"sortDir":{"type":"string","description":"The sort direction.","enum":["asc","desc"],"default":"asc"},"returnTotalCount":{"type":"boolean","description":"When true, the response's `pg` object includes `totalCount`.","default":false},"last":{"type":"string","description":"The `imtId` of the last entry from the previous page. When provided, `offset` is ignored.","pattern":"^[0-9]{13}_[^_]+$","example":"1788264000000_c37c729235cd4dc4911323b23beaea7d"},"limit":{"type":"integer","description":"The maximum number of entries to return.","minimum":1,"maximum":10000,"default":1000},"offset":{"type":"integer","description":"The number of matching entries to skip. This value is ignored when `last` is provided.","minimum":0,"default":0}}},"examples":{"first-page":{"value":{"sortBy":"triggeredAt","sortDir":"desc","returnTotalCount":true,"limit":100,"offset":0}},"cursor-page":{"value":{"sortBy":"triggeredAt","sortDir":"desc","last":"1788264000000_c37c729235cd4dc4911323b23beaea7d","limit":100}}}}],"responses":{"200":{"description":"Audit log entries for the specified team.","content":{"application/json":{"schema":{"type":"object","required":["auditLogs","pg"],"properties":{"auditLogs":{"type":"array","items":{"allOf":[{"type":"object","required":["uuid","createdAt","triggeredAt","eventName","actor","targetId"],"properties":{"uuid":{"type":"string","description":"The UUIDv4 of the audit log entry. Hyphens are optional.","pattern":"^[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}$"},"createdAt":{"type":"string","format":"date-time","description":"When Auditman stored the entry."},"triggeredAt":{"type":"string","format":"date-time","description":"When the audited event occurred."},"organizationId":{"type":"integer","minimum":1},"organization":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string"}}},"eventName":{"type":"string"},"team":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string"}}},"actor":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string"},"email":{"type":"string"},"anonymized":{"type":"boolean","description":"Present and `true` when the user's audit logs were anonymized. The user then has no `name` or `email`, only `id`."}}},"targetId":{"type":"string"},"version":{"type":"object","required":["to"],"properties":{"from":{"type":"string"},"to":{"type":"string"}}}}},{"type":"object","properties":{"imtId":{"type":"string","description":"Cursor identifier to pass as `pg[last]` when requesting the next page.","pattern":"^[0-9]{13}_[^_]+$"}}}]}},"pg":{"type":"object","required":["limit"],"properties":{"sortBy":{"type":"string","enum":["triggeredAt","createdAt","eventName","targetId"]},"sortDir":{"type":"string","enum":["asc","desc"]},"returnTotalCount":{"type":"boolean"},"last":{"type":"string","pattern":"^[0-9]{13}_[^_]+$"},"limit":{"type":"integer","minimum":1,"maximum":10000},"offset":{"type":"integer","minimum":0},"totalCount":{"type":"integer","minimum":0}}}}},"examples":{"default":{"summary":"Audit log entries using the default pagination options","value":{"auditLogs":[{"uuid":"c37c729235cd4dc4911321b23beaea7d","imtId":"1713528322000_c37c729235cd4dc4911321b23beaea7d","createdAt":"2024-05-24T14:22:16.879Z","triggeredAt":"2024-04-19T12:05:22.000Z","organizationId":3,"organization":{"id":3,"name":"John's Organization"},"eventName":"webhook_created","team":{"id":212,"name":"Operations"},"actor":{"id":212,"name":"John Doe","email":"john.doe@example.com"},"targetId":"3000","version":{"from":"1.0.0","to":"1.0.1"}},{"uuid":"5a1f0c2e8d3b4e6f9a7c1b2d3e4f5a6b","imtId":"1713528000000_5a1f0c2e8d3b4e6f9a7c1b2d3e4f5a6b","createdAt":"2024-05-24T14:22:16.879Z","triggeredAt":"2024-04-19T12:00:00.000Z","organizationId":3,"organization":{"id":3,"name":"John's Organization"},"eventName":"webhook_deleted","team":{"id":212,"name":"Operations"},"actor":{"id":213,"anonymized":true},"targetId":"2999"}],"pg":{"sortDir":"asc","returnTotalCount":false,"limit":1000,"offset":0}}}}}}},"400":{"description":"An identifier, date, filter, pagination, or sorting value is invalid (`SC400`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"invalidRequest":{"summary":"Invalid request parameter","value":{"code":"SC400","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"401":{"description":"Authentication failed, the authorization lacks `audit-logs:read`, or an organization-bound authorization cannot access the requested entity (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"missingScope":{"summary":"Authorization lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: audit-logs:read"}}}}}},"402":{"description":"The organization license does not include the audit logs feature (`IM027`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"licenseLimit":{"summary":"Audit logs are not included in the organization license","value":{"code":"IM027","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"403":{"description":"The caller lacks permission to view audit logs for the requested organization or team, or the audit log entry belongs to a different organization (`SC403`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"permissionDenied":{"summary":"Caller lacks permission to view the requested audit logs","value":{"code":"SC403","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"404":{"description":"The requested organization, team, or audit log entry does not exist (`SC404`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"resourceNotFound":{"summary":"Requested audit-log resource does not exist","value":{"code":"SC404","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}}}}},"/audit-logs/v2/team/{teamId}/filters":{"get":{"operationId":"getTeamAuditLogsFiltersV2","tags":["Audit logs"],"summary":"Get team audit log filters","description":"Gets available audit logs filters for the team.\n\nRequires the `audit-logs:read` scope on the API token.\n\nUse the data in the response to build filters for the `GET /audit-logs/v2/team/{teamId}` endpoint: `users` supplies the values for the `author` parameter and `events` supplies the values for the `event` parameter. The response has no `teams` array — the team is already fixed by the path. The endpoint takes no query parameters.\n","security":[{"token":["audit-logs:read"]}],"parameters":[{"name":"teamId","in":"path","required":true,"description":"The positive ID of the team.","schema":{"type":"integer","minimum":1},"example":212}],"responses":{"200":{"description":"Available audit logs filters for the specified team.","content":{"application/json":{"schema":{"type":"object","required":["users","events"],"properties":{"users":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string"},"email":{"type":"string"},"anonymized":{"type":"boolean","description":"Present and `true` when the user's audit logs were anonymized. The user then has no `name` or `email`, only `id`."}}}},"events":{"anyOf":[{"type":"array","items":{"type":"object","required":["header","items"],"properties":{"header":{"type":"string"},"items":{"type":"array","minItems":1,"items":{"type":"object","required":["label","value"],"properties":{"label":{"type":"string"},"value":{"type":"string"}}}}}}},{"type":"array","maxItems":1,"items":{"type":"object","required":["items"],"properties":{"items":{"type":"array","minItems":1,"items":{"type":"object","required":["label","value"],"properties":{"label":{"type":"string"},"value":{"type":"string"}}}}}}}]}}},"examples":{"default":{"summary":"Team audit-log filter options","value":{"users":[{"id":212,"name":"John Doe","email":"john.doe@example.com"},{"id":213,"anonymized":true}],"events":[{"header":"Webhooks","items":[{"label":"Webhook created","value":"webhook_created"},{"label":"Webhook updated","value":"webhook_updated"}]}]}}}}}},"400":{"description":"An identifier, date, filter, pagination, or sorting value is invalid (`SC400`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"invalidRequest":{"summary":"Invalid request parameter","value":{"code":"SC400","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"401":{"description":"Authentication failed, the authorization lacks `audit-logs:read`, or an organization-bound authorization cannot access the requested entity (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"missingScope":{"summary":"Authorization lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: audit-logs:read"}}}}}},"402":{"description":"The organization license does not include the audit logs feature (`IM027`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"licenseLimit":{"summary":"Audit logs are not included in the organization license","value":{"code":"IM027","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"403":{"description":"The caller lacks permission to view audit logs for the requested organization or team, or the audit log entry belongs to a different organization (`SC403`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"permissionDenied":{"summary":"Caller lacks permission to view the requested audit logs","value":{"code":"SC403","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"404":{"description":"The requested organization, team, or audit log entry does not exist (`SC404`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"resourceNotFound":{"summary":"Requested audit-log resource does not exist","value":{"code":"SC404","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}}}}},"/audit-logs/v2/{organizationId}/{uuid}":{"get":{"operationId":"getAuditLogDetailV2","tags":["Audit logs"],"summary":"Get audit log detail","description":"Gets details of the audit log entry with the specified UUID.\n\nRequires the `audit-logs:read` scope on the API token.\n\nThe `organizationId` in the path must be the organization the entry belongs to.\n","security":[{"token":["audit-logs:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The positive ID of the organization.","schema":{"type":"integer","minimum":1},"example":11},{"name":"uuid","in":"path","required":true,"description":"The UUIDv4 of the audit log entry. Hyphens are optional.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}$"},"example":"c37c7292-35cd-4dc4-9113-21b23beaea7d"}],"responses":{"200":{"description":"Detail of the specified audit log entry.","content":{"application/json":{"schema":{"allOf":[{"type":"object","required":["uuid","createdAt","triggeredAt","eventName","actor","targetId"],"properties":{"uuid":{"type":"string","description":"The UUIDv4 of the audit log entry. Hyphens are optional.","pattern":"^[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}$"},"createdAt":{"type":"string","format":"date-time","description":"When Auditman stored the entry."},"triggeredAt":{"type":"string","format":"date-time","description":"When the audited event occurred."},"organizationId":{"type":"integer","minimum":1},"organization":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string"}}},"eventName":{"type":"string"},"team":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string"}}},"actor":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string"},"email":{"type":"string"},"anonymized":{"type":"boolean","description":"Present and `true` when the user's audit logs were anonymized. The user then has no `name` or `email`, only `id`."}}},"targetId":{"type":"string"},"version":{"type":"object","required":["to"],"properties":{"from":{"type":"string"},"to":{"type":"string"}}}}},{"type":"object","properties":{"detail":{"type":"object","additionalProperties":true,"description":"Event-specific data. When a user named here was anonymized, their personal data is removed and `anonymized` is `true`."}}}]},"examples":{"default":{"summary":"Audit log detail","value":{"uuid":"c37c729235cd4dc4911321b23beaea7d","createdAt":"2024-05-24T14:22:16.879Z","triggeredAt":"2024-04-19T12:05:22.000Z","organizationId":3,"organization":{"id":3,"name":"John's Organization"},"eventName":"webhook_created","team":{"id":212,"name":"Operations"},"actor":{"id":212,"name":"John Doe","email":"john.doe@example.com"},"targetId":"3000","version":{"from":"1.0.0","to":"1.0.1"},"detail":{"webhookName":"Orders webhook","webhookType":"http"}}}}}}},"400":{"description":"An identifier, date, filter, pagination, or sorting value is invalid (`SC400`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"invalidRequest":{"summary":"Invalid request parameter","value":{"code":"SC400","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"401":{"description":"Authentication failed, the authorization lacks `audit-logs:read`, or an organization-bound authorization cannot access the requested entity (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"missingScope":{"summary":"Authorization lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: audit-logs:read"}}}}}},"402":{"description":"The organization license does not include the audit logs feature (`IM027`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"licenseLimit":{"summary":"Audit logs are not included in the organization license","value":{"code":"IM027","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"403":{"description":"The caller lacks permission to view audit logs for the requested organization or team, or the audit log entry belongs to a different organization (`SC403`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"permissionDenied":{"summary":"Caller lacks permission to view the requested audit logs","value":{"code":"SC403","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}},"404":{"description":"The requested organization, team, or audit log entry does not exist (`SC404`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable Make API or Auditman error code."},"name":{"type":"string","description":"Error name included in responses returned by Auditman."},"message":{"type":"string","description":"Human-readable error message. Auditman uses a generic message in production responses."},"detail":{"type":"string","description":"Request-specific detail when the response safely exposes one."},"details":{"type":"array","description":"Individual validation failures included by Auditman outside production.","items":{"type":"string"}}}},"examples":{"resourceNotFound":{"summary":"Requested audit-log resource does not exist","value":{"code":"SC404","name":"Error","message":"There was an error while generating the response. Please try again later."}}}}}}}}},"/analytics/{organizationId}":{"get":{"tags":["Analytics"],"summary":"Get organization analytics","description":"Gets analytics data for the specified organization. This feature is available only for organizations with the Enterprise plan. You can get analytics data only for organizations where you have the \"Owner\" organization role. Otherwise, you get the 403 error.\n\nThe data entries in the response are sorted by the amount of operations used by a scenario in ascending order. Specify different sorting with the `sortBy` parameter. You can use query parameters (like `timeframe[dateFrom]`, `timeframe[dateTo]` or `teamId`) to refine the results and pagination to navigate through a large number of entries.\n\nMake keeps the analytics data for a maximum of 30 days for non-Enterprise plans and 60 days for Enterprise plans. The default time frame reflects the maximum available for your plan.\n","security":[{"token":["analytics:read"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11},{"name":"teamId","in":"query","description":"IDs of the teams for which you want to get the analytics data.\n","schema":{"oneOf":[{"type":"integer","example":1},{"type":"array","items":{"type":"integer"},"example":[1,2,3]}]}},{"name":"folderId","in":"query","description":"IDs of the scenario folders for which you want to get the analytics data.\n","schema":{"oneOf":[{"type":"integer","example":1},{"type":"array","items":{"type":"integer"},"example":[1,2,3]}]}},{"name":"status","in":"query","description":"You can use the `status` parameter to get analytics data about scenarios with specific scenario statuses. The available scenario statuses are:\n\n- `active`: scenario is enabled\n- `inactive`: scenario is disabled\n- `invalid`: scenario is disabled due to errors\n","schema":{"oneOf":[{"example":"active","type":"string","enum":["active","invalid","inactive"]},{"type":"array","items":{"type":"string","enum":["active","invalid","inactive"]},"example":["inactive","invalid"]}]}},{"name":"timeframe[dateFrom]","in":"query","description":"Use the `timeframe[dateFrom]` parameter to get analytics data from the specified date. Specify the date and time in the ISO 8601 compliant format.\n\nThe default is the date since one year from today. You can't use a date older than a year from today.\n","schema":{"type":"string","format":"date-time"},"example":"2020-03-20T05:53:27.368Z"},{"name":"timeframe[dateTo]","in":"query","description":"Use the `timeframe[dateTo]` parameter to get analytics data until the specified date. Specify the date and time in the ISO 8601 compliant format.\n\nThe default is to get data until today.\n","schema":{"type":"string","format":"date-time"},"example":"2020-03-27T05:53:27.368Z"},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The number of entities you want to skip before getting entities you want."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"The maximum number of entities you want to get in the response."},{"name":"pg[last]","in":"query","schema":{"type":"integer"},"example":10,"description":"The last retrieved key. In response, you get only entries that follow after the key."},{"schema":{"type":"string","enum":["name","teamName","status","operations","executions","errors","errorRate","executionsChange","operationsChange","errorsChange","errorRateChange"]},"description":"Specify which property Make will use to sort the analytics entries in the response. The default is `operations`.","name":"pg[sortBy]","in":"query"},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[returnTotalCount]","in":"query","schema":{"type":"boolean"},"description":"Set to `true` to get also the total number of analytics entries in the response.","example":true}],"responses":{"200":{"description":"Analytics entries for the specified organization.","content":{"application/json":{"schema":{"type":"object","properties":{"total":{"type":"object","properties":{"executions":{"type":"integer","minimum":0},"operations":{"type":"integer","minimum":0},"centicredits":{"type":"string","description":"Bigint number as a string to avoid precision issues in JavaScript.","minimum":0},"errors":{"type":"integer","minimum":0},"errorRate":{"type":"number","description":"Percentage. Available only when it can be calculated."},"executionsChange":{"type":"number","description":"Percentage. Available only when it can be calculated."},"operationsChange":{"type":"number","description":"Percentage. Available only when it can be calculated."},"centicreditsChange":{"type":"number","description":"Percentage. Available only when it can be calculated."},"errorsChange":{"type":"number","description":"Percentage. Available only when it can be calculated."},"errorRateChange":{"type":"number","description":"Percentage. Available only when it can be calculated."}}},"analytics":{"type":"array","items":{"allOf":[{"type":"object","properties":{"executions":{"type":"integer","minimum":0},"operations":{"type":"integer","minimum":0},"centicredits":{"type":"string","description":"Bigint number as a string to avoid precision issues in JavaScript.","minimum":0},"errors":{"type":"integer","minimum":0},"errorRate":{"type":"number","description":"Percentage. Available only when it can be calculated."},"executionsChange":{"type":"number","description":"Percentage. Available only when it can be calculated."},"operationsChange":{"type":"number","description":"Percentage. Available only when it can be calculated."},"centicreditsChange":{"type":"number","description":"Percentage. Available only when it can be calculated."},"errorsChange":{"type":"number","description":"Percentage. Available only when it can be calculated."},"errorRateChange":{"type":"number","description":"Percentage. Available only when it can be calculated."}}},{"type":"object","properties":{"imtId":{"type":"string"},"id":{"type":"number"},"name":{"type":"string"},"status":{"type":"string","enum":["active","invalid","inactive"]},"teamId":{"type":"number"},"teamName":{"type":"string"}}}]}},"pg":{"allOf":[{"type":"object","properties":{"last":{"type":"string","description":"Shown only when using the `last` based pagination."},"showLast":{"type":"boolean","description":"Shown only when using the `last` based pagination."},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer","description":"Shown only when using the `offset` based pagination."}}},{"type":"object","properties":{"totalCount":{"type":"integer","description":"The number of analytics entries for the given query."}}}]}}},"example":{"total":{"executions":1000,"operations":5000,"centicredits":"500000","errors":1,"errorRate":0.1,"executionsChange":0,"operationsChange":-10,"centicreditsChange":-1000,"errorsChange":100,"errorRateChange":100},"analytics":[{"imtId":"1632371803593_1234","id":1234,"name":"Scenario 1","status":"active","teamId":1,"teamName":"My Team","executions":10,"operations":60,"centicredits":"6000","errors":0,"errorRate":0,"executionsChange":0,"operationsChange":0,"centicreditsChange":0,"errorsChange":-100,"errorRateChange":-100}],"pg":{"sortBy":"operations","sortDir":"desc","offset":0,"limit":100,"returnTotalCount":true,"totalCount":60}}}}}}}},"/cashier/products":{"get":{"tags":["Cashier"],"summary":"Get list of cashier products","x-private":true,"parameters":[{"name":"type","in":"query","schema":{"type":"string","enum":["PLAN","EXTRA"]},"example":"PLAN","required":false},{"name":"includeInvisible","in":"query","schema":{"type":"boolean"},"example":true},{"name":"relatedPriceId","in":"query","schema":{"type":"integer"},"example":null},{"name":"organizationId","in":"query","schema":{"type":"integer"},"example":null,"required":false}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"products":{"type":"array","items":{"type":"object"}}}},"examples":{"all-plans":{"summary":"Return all PLANs","description":"Returns all products of type PLAN","value":{"products":[{"id":1,"name":{"cs":"Free","en":"Free"},"description":{"cs":"Pro kohokoliv, kdo se chce naučit základy automatizace","en":"For anyone to learn the basics."},"descriptionHover":{"cs":"","en":""},"additionalInfo":{"cs":["Tvůrce pracovních procesů bez kódování","1000+ standard apps","Neomezený počet uživatelů","2 aktivní scénáře","Doba běhu scénářů - 5 minut","Velikost souborů - 5 MB","Min. interval mezi naplánovanými spuštěními scénářů - 15 minut","Monitorování spuštění v reálném čase","Vlastní aplikace"],"en":["No-code workflow builder","1000+ standard apps","Unlimited users","2 active scenarios","5min scenario execution time","5 MB file size","15min interval between scheduled scenario executions","Real-time execution monitoring","Custom apps"]},"priority":1,"visible":true,"config":{"teams":1,"fslimit":5242880,"apiLimit":0,"fulltext":false,"interval":15,"priority":"low","retention":7,"scenarios":2,"gracePeriod":0,"executionTime":5,"creatingTemplates":false,"installPublicApps":true,"productManagement":"selfService"},"type":"PLAN","comparisonId":1,"prices":[{"id":1,"price":0,"config":{"dslimit":1,"iolimit":50,"dsslimit":1048576,"transfer":536870912,"dlqStorage":1048576,"operations":1000,"restartPeriod":"1 month"},"period":"month","default":true,"visible":true,"priority":1,"currencyCode":"USD"}]}]}}}}}}}}},"/cashier/prices/{priceId}":{"get":{"tags":["Cashier"],"summary":"Get price detail","parameters":[{"name":"priceId","in":"path","required":true,"schema":{"type":"number"},"example":10}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"productId":{"type":"number"},"price":{"type":"number"},"currencyCode":{"type":"string"},"period":{"type":"string"},"priority":{"type":"number"},"visible":{"type":"boolean"},"default":{"type":"boolean"},"config":{"type":"object","properties":{"dslimit":{"type":"number"},"iolimit":{"type":"number"},"dsslimit":{"type":"number"},"transfer":{"type":"number"},"dlqStorage":{"type":"number"},"operations":{"type":"number"},"restartPeriod":{"type":"string"}}}}},"example":{"id":10,"productId":4,"price":"86.00","currencyCode":"USD","period":"month","priority":5,"visible":true,"default":false,"config":{"dslimit":12,"iolimit":2668,"dsslimit":41943040,"transfer":21474836480,"dlqStorage":41943040,"operations":40000,"restartPeriod":"1 month"}}}}}}}},"/cashier/vat-validation/patterns":{"get":{"tags":["Cashier"],"summary":"Get VAT ID format patterns","description":"Proxies imt-cashier's VAT-ID format patterns (EU + Northern Ireland). Each entry is keyed by ISO 3166-1 alpha-2 country code (Northern Ireland is keyed under `GB`, Greece under `GR`) and contains: `prefix` — the VAT-ID prefix used in the full ID (equals the ISO code except `GB` → `XI` and `GR` → `EL`); `regex` — an anchored (`^…$`) regex matching the **full** VAT ID including the optional prefix, safe to use directly via `new RegExp(regex)`; `description` — a human-readable format hint; and `example` — an example VAT ID suitable as a placeholder. Intended for client-side VAT ID format validation.\n","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"patterns":{"type":"object","additionalProperties":{"type":"object","properties":{"prefix":{"type":"string"},"regex":{"type":"string"},"description":{"type":"string"},"example":{"type":"string"}},"required":["prefix","regex","description","example"]}}}},"examples":{"default":{"summary":"VAT ID patterns","value":{"patterns":{"AT":{"prefix":"AT","regex":"^(?:AT)?U\\d{8}$","description":"ATU + 8 digits (e.g. ATU12345678)","example":"ATU12345678"},"DE":{"prefix":"DE","regex":"^(?:DE)?[1-9]\\d{8}$","description":"DE + 9 digits (e.g. DE123456789)","example":"DE123456789"},"GB":{"prefix":"XI","regex":"^(?:GB|XI)?(?:\\d{9}|\\d{12}|GD\\d{3}|HA\\d{3})$","description":"XI (Northern Ireland) or GB + 9 or 12 digits, or GD/HA + 3 digits (e.g. XI123456789)","example":"XI123456789"}}}}}}}}}}},"/connections":{"get":{"tags":["Connections"],"summary":"List connections","description":"Retrieves a collection of all connections for a team with a given ID. Returned connections are sorted by name in ascending order.","security":[{"token":["connections:read"]}],"parameters":[{"name":"teamId","in":"query","schema":{"type":"integer"},"required":true,"description":"The unique ID of the team whose connections will be retrieved.","example":22},{"name":"type[]","in":"query","schema":{"type":"array","items":{"type":"string"}},"examples":{"id-name":{"value":"airtable2"}},"description":"Specifies the type of the connections to return details for. The connection type is defined in the `accountName` property and you can get it from the [Get connection details](./get--connections--connectionid.md) endpoint."},{"name":"<connectionType>[]","in":"query","schema":{"type":"array","items":{"type":"string"}},"examples":{"scoped-connection":{"value":["requestedScope","anotherRequestedScope"]}},"description":"Allows utilizing the scopes check. The particular connection type (`<connectionType>`) should be one of the types specified in the `type[]` parameter. The values are the scopes to check for the given connection type. You can send multiple `<connectionType>` values with corresponding arrays to check multiple connection types scopes at once. The result of the check is reflected in the `scoped` property of the returned connection object."},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","accountName","accountLabel","packageName","expire","metadata","teamId","theme","upgradeable","scopesCnt","scoped","accountType","editable","uid","connectedSystemId","organizationId"]}},"description":"Specifies the group of values to return. For example, you may want to check which returned connections can be upgraded.","examples":{"all-columns":{"summary":"Return all details","value":["id","name","accountName","accountLabel","packageName","expire","metadata","teamId","theme","upgradeable","scopesCnt","scoped","accountType","editable","uid","connectedSystemId","organizationId"]},"id-name":{"summary":"Return connection ID and name","value":["id","name","accountName"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"connections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"accountName":{"type":"string"},"accountLabel":{"type":"string"},"packageName":{"type":"string"},"expire":{"type":"string","format":"date-time"},"metadata":{"type":"object","properties":{"value":{"type":"string"},"type":{"type":"string","enum":["string","email"]}}},"teamId":{"type":"integer"},"theme":{"type":"string","format":"color"},"upgradeable":{"type":"boolean"},"scopesCnt":{"type":"integer"},"scoped":{"type":"boolean"},"accountType":{"type":"string"},"editable":{"type":"boolean"},"uid":{"type":"string"},"connectedSystemId":{"type":"string"},"organizationId":{"type":"integer"},"visibility":{"type":"string","enum":["team","locked"],"description":"Entity-tier visibility. With `locked` the connection is restricted to its access list; `team` makes it visible to the whole team."}}}}}},"examples":{"all-columns":{"summary":"Return all details","description":"Return all available information about user connections.","value":{"connections":[{"id":2,"name":"My Airtable connection","accountName":"airtable2","accountLabel":"Airtable","packageName":null,"expire":null,"metadata":null,"teamId":22,"theme":"#18bfff","upgradeable":false,"scopesCnt":0,"scoped":true,"accountType":"basic","editable":false,"uid":null,"connectedSystemId":"c5d8e134-d2f8-480d-9838-119a54f65d3e","organizationId":3},{"id":15,"name":"My Google connection","accountName":"google","accountLabel":"Google","packageName":null,"expire":null,"metadata":{"type":"email","value":"test@mydomain.com"},"teamId":22,"theme":"#fecd5f","upgradeable":false,"scopesCnt":4,"scoped":true,"accountType":"oauth","editable":false,"uid":225874569526501080000,"connectedSystemId":"4244156b-88cc-43cf-a5e9-e94bd0304745","organizationId":2343}]}},"id-name":{"summary":"Return ID, name, connection type","description":"Return ID and name of the user connections with the `airtable2` connection type.","value":{"connections":[{"id":2,"name":"My Airtable connection","accountName":"airtable2"}]}}}}}}}},"post":{"tags":["Connections"],"summary":"Create connection","description":"Creates a new connection with data passed in the request body. In the response, it returns all details of the created connection.","security":[{"token":["connections:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"accountName":{"type":"string","description":"The connection name. The name must be at most 128 characters long and does not need to be unique."},"accountType":{"type":"string","description":"The connection type corresponding to the connected app. For some connection types, this property may require providing additional properties in the request body,  such as `clientId` and `clientSecret`, in order to authorize the connection and make it functional."},"scopes":{"type":"array","description":"The connection scope determining the module use. The format and number of available scopes vary depending on the `accountType` parameter.","items":{"type":"string"}},"accountVisibility":{"type":"string","enum":["team","locked"],"default":"team","description":"Entity-tier visibility of the created connection. With `locked` the connection is restricted to its access list from the moment it is created, with the creator as its sole admin. Requires the *Locked connections* feature to be enabled for the organization; otherwise the request fails with `IM903` (HTTP 400). When the access list cannot be provisioned, the request fails with HTTP 422 and the connection is not created. Omitted or `team`, the connection is visible to the whole team."}},"additionalProperties":{}},"examples":{"team-visible":{"summary":"Team-visible connection (default)","value":{"accountName":"Slack Test","accountType":"slack","clientId":123456,"clientSecret":"secret","scopes":["chat:write"]}},"born-locked":{"summary":"Connection created locked","description":"Creates the connection with `accountVisibility: locked` — restricted to its access list, with the creator as its sole admin.","value":{"accountName":"Slack Test","accountType":"slack","clientId":123456,"clientSecret":"secret","scopes":["chat:write"],"accountVisibility":"locked"}}}}}},"parameters":[{"name":"teamId","in":"query","schema":{"type":"integer"},"required":true,"description":"The unique ID of the team whose connections will be retrieved.","example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"accountName":{"type":"string"},"accountLabel":{"type":"string"},"packageName":{"type":"string"},"expire":{"type":"string","format":"date-time"},"metadata":{"type":"object","properties":{"value":{"type":"string"},"type":{"type":"string","enum":["string","email"]}}},"teamId":{"type":"integer"},"theme":{"type":"string","format":"color"},"upgradeable":{"type":"boolean"},"scopesCnt":{"type":"integer"},"scoped":{"type":"boolean"},"accountType":{"type":"string"},"editable":{"type":"boolean"},"uid":{"type":"string"},"connectedSystemId":{"type":"string"},"organizationId":{"type":"integer"},"visibility":{"type":"string","enum":["team","locked"],"description":"Entity-tier visibility. With `locked` the connection is restricted to its access list; `team` makes it visible to the whole team."}}}}},"example":{"connection":{"id":90,"name":"Slack test","accountName":"slack","accountLabel":"Slack","packageName":null,"expire":null,"metadata":{"value":"Make User","type":"string"},"teamId":2,"theme":"#4a154b","upgradeable":false,"scopes":0,"scoped":true,"accountType":"oauth","editable":false,"uid":3243125312}}}}},"400":{"description":"The `accountVisibility` value is invalid (`IM005`), or `accountVisibility: locked` was sent while the *Locked connections* feature is not enabled for the organization (`IM903`, returned while the `web_api_locked_connections` feature flag is off).\n"},"422":{"description":"The access list of a `locked` connection could not be provisioned (`IM016`). The connection is not created — the request can be retried.\n"}}}},"/connections/{connectionId}/editable-data-schema":{"get":{"tags":["Connections"],"summary":"List updatable connection parameters","description":"Gets a list of connection parameters that can be updated. You can update a connection with the API call `POST /connections/{connectionId}/set-data`.\n\nIf the connection cannot be updated then the API call returns the error message \"Cannot edit this connection.\" When this happens, create a new connection instead.\n","security":[{"token":["connections:read"]}],"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"editableParameters":{"type":"array","items":{"type":"string"}}}},"examples":{"api-key-connection":{"summary":"API key connection","description":"List editable parameters of an API key connection. Each API key connection might have different editable parameters.","value":{"editableParameters":["url","apiKey"]}},"oauth-connection":{"summary":"OAuth connection","description":"List editable parameters of an OAuth2 connection. Each OAuth2 connection might have different editable parameters.","value":{"editableParameters":["clientId","clientSecret","cloudName","scopes"]}}}}}},"403":{"description":"The connection is restricted to its access list and the caller is not on it with permission to use it (`IM002`).\n"}}}},"/connections/{connectionId}/set-data":{"post":{"tags":["Connections"],"summary":"Update a connection","description":"Updates the specified connection with data in the request body. Check which data you need to send to update the connection with the API call `GET /connections/{connectionId}/editable-data-schema`. The data might be different for each app and connection type.\n\nThe new connection data replace the original connection data. Make sure to provide all relevant data. If a field is missing in the request body, Make replaces the field in the new connection with an empty value.\n\nFor OAuth connections, you need to log in to Make and confirm the changes with the **Reauthorize** button. For the rest of the connection types, Make starts using the new connection data immediately.\n\nIf the connection cannot be updated then the API call returns the error message \"Cannot edit this connection.\" When this happens, create a new connection instead.\n","security":[{"token":["connections:write"]}],"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"The request body has to contain the parameters listed in the response from the API call `GET /connections/{connectionId}/editable-data-schema` and the new values associated with them.\n","additionalProperties":{}},"examples":{"api-key-connection":{"summary":"Update API key connection","description":"Update an API key connection. Each API key connection might require different parameters.","value":{"url":"example.com","apiKey":"your-api-key"}},"oauth-connection":{"summary":"Update OAuth2 connection","description":"Update an OAuth2 connection. Each OAuth2 connection might require different parameters.","value":{"clientId":540937,"clientSecret":"my-password-1234","cloudName":"exampledomain","scopes":["entity.read","entity.write"]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"api-key-connection":{"value":{"changed":true}},"oauth-connection":{"value":{"changed":true}}}}}},"403":{"description":"The connection is restricted to its access list and the caller is not on it with permission to manage it (`IM002`).\n"}}}},"/connections/{connectionId}":{"get":{"tags":["Connections"],"summary":"Get connection details","description":"Retrieves details of a connection with a given ID.","security":[{"token":["connections:read"]}],"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","accountName","accountLabel","packageName","expire","metadata","teamId","theme","upgradeable","scopesCnt","scoped","accountType","editable","uid","scopes","connectedSystemId","organizationId","visibility"]}},"description":"Specifies the group of values to return. For example, you may want to retrieve only the name and scope for a given connection."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"accountName":{"type":"string"},"accountLabel":{"type":"string"},"packageName":{"type":"string"},"expire":{"type":"string","format":"date-time"},"metadata":{"type":"object","properties":{"value":{"type":"string"},"type":{"type":"string","enum":["string","email"]}}},"teamId":{"type":"integer"},"theme":{"type":"string","format":"color"},"upgradeable":{"type":"boolean"},"scopesCnt":{"type":"integer"},"scoped":{"type":"boolean"},"accountType":{"type":"string"},"editable":{"type":"boolean"},"uid":{"type":"string"},"connectedSystemId":{"type":"string"},"organizationId":{"type":"integer"},"visibility":{"type":"string","enum":["team","locked"],"description":"Entity-tier visibility. With `locked` the connection is restricted to its access list; `team` makes it visible to the whole team."}}},{"type":"object","properties":{"scopes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"account":{"type":"string"}}}}}}]}}},"example":{"connection":{"id":93,"name":"Google","accountName":"google","accountLabel":"Google","packageName":null,"expire":null,"metadata":{"value":"tom@example.com","type":"email"},"teamId":4,"theme":"#fecd5f","upgradeable":false,"scopesCnt":5,"scoped":true,"accountType":"oauth","editable":false,"uid":123456,"scopes":[{"id":"https://www.googleapis.com/auth/userinfo.email","name":"View user's email address","account":"google"},{"id":"https://mail.google.com/","name":"Access to Gmail.","account":"google"},{"id":"openid","account":"google"},{"id":"https://www.googleapis.com/auth/spreadsheets","account":"google"},{"id":"https://www.googleapis.com/auth/drive","name":"Access to Google Drive.","account":"google"}],"connectedSystemId":"4244156b-88cc-43cf-a5e9-e94bd0304745","organizationId":3,"visibility":"team"}}}}},"403":{"description":"The connection is restricted to its access list and the caller is not on it with permission to use it (`IM002`).\n"}}},"patch":{"tags":["Connections"],"summary":"Rename a connection","description":"Updates the specified connection's name. The response contains all information about the updated connection.","security":[{"token":["connections:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The updated connection name. The name must be at most 128 characters long and does not need to be unique."}},"additionalProperties":false},"example":{"name":"New name"}}}},"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","accountName","accountLabel","packageName","expire","metadata","teamId","theme","upgradeable","scopesCnt","scoped","accountType","editable","uid"]}},"description":"Specifies the group of values to return. For example, you may want to retrieve only the expiration of the updated connection."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"accountName":{"type":"string"},"accountLabel":{"type":"string"},"packageName":{"type":"string"},"expire":{"type":"string","format":"date-time"},"metadata":{"type":"object","properties":{"value":{"type":"string"},"type":{"type":"string","enum":["string","email"]}}},"teamId":{"type":"integer"},"theme":{"type":"string","format":"color"},"upgradeable":{"type":"boolean"},"scopesCnt":{"type":"integer"},"scoped":{"type":"boolean"},"accountType":{"type":"string"},"editable":{"type":"boolean"},"uid":{"type":"string"},"connectedSystemId":{"type":"string"},"organizationId":{"type":"integer"},"visibility":{"type":"string","enum":["team","locked"],"description":"Entity-tier visibility. With `locked` the connection is restricted to its access list; `team` makes it visible to the whole team."}}}}},"example":{"connection":{"id":93,"name":"New Name","accountName":"imap","accountLabel":"Others (IMAP)","packageName":null,"expire":null,"metadata":{"value":"tom@example.com","type":"email"},"teamId":4,"theme":"#eb5768","upgradeable":false,"scopesCnt":0,"scoped":true,"accountType":"basic","editable":true,"uid":123456}}}}},"403":{"description":"The connection is restricted to its access list and the caller is not on it with permission to manage it (`IM002`).\n"}}},"delete":{"tags":["Connections"],"summary":"Delete connection","description":"Deletes a connection with a given ID and returns the ID in the response.","security":[{"token":["connections:write"]}],"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"description":"Confirms the deletion if the connection is included in at least one scenario. Confirmation is required because the scenario will stop working without the connection. If the parameter is missing or it is set to `false` an error code is returned and the resource is not deleted.","example":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"type":"integer"}}},"example":{"connection":1}}}},"403":{"description":"The connection is restricted to its access list and the caller is not on it with permission to manage it (`IM002`). A team administrator may still delete such a connection only when nobody is left able to manage it.\n"}}}},"/connections/{connectionId}/test":{"post":{"tags":["Connections"],"summary":"Verify connection","description":"Verifies the connection status. This endpoint usually communicates with the API of the app that includes the given connection and verifies if credentials saved in Make are still valid. It returns the confirmation if the connection is verified (`true`) or not (`false`).","security":[{"token":["connections:write"]}],"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"verified":{"type":"boolean"}}},"example":{"verified":true}}}},"403":{"description":"The connection is restricted to its access list and the caller is not on it with permission to use it (`IM002`).\n"}}}},"/connections/{connectionId}/scoped":{"post":{"tags":["Connections"],"summary":"Verify if connection is scoped","description":"Verifies if a scope for a given connection is set. This endpoint returns the information if the connection is scoped (`true`) or not (`false`).","security":[{"token":["connections:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"scope":{"type":"array","description":"The array with IDs of the scopes for a given connection. The scope ID of a specific connection can be retrieved from the [Get connection details](./get--connections--connectionid.md) endpoint.","items":{"type":"string"},"required":["items"]}}},"example":{"scope":["https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/drive"]}}}},"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"type":"object","properties":{"scoped":{"type":"boolean"}}}}},"example":{"connection":{"scoped":false}}}}},"403":{"description":"The connection is restricted to its access list and the caller is not on it with permission to use it (`IM002`).\n"}}}},"/connections/{connectionId}/make-locked":{"post":{"tags":["Connections"],"summary":"Lock connection","description":"Restricts the connection's visibility to its access list (`visibility: locked`). The caller becomes the sole admin\nof the locked connection.\n\nCaller rule: only the connection's author can lock it, and that author must still be a member of the\nconnection's team. A connection without an author cannot be locked.\n\nThe operation is idempotent — locking an already locked connection succeeds without any change; the caller\nrule above still applies.\n\nRequires the *Locked connections* feature to be enabled for the organization.\n","security":[{"token":["connections:write"]}],"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the connection."},"visibility":{"type":"string","enum":["locked"],"description":"The visibility of the connection after the flip."}}}}},"examples":{"locked":{"value":{"connection":{"id":15,"visibility":"locked"}}}}}}},"400":{"description":"The *Locked connections* feature is not enabled for the organization (`IM903`, returned while the `web_api_locked_connections` feature flag is off).\n"},"403":{"description":"The caller is not the connection's author (`IM002`).\n"},"404":{"description":"The connection does not exist (`IM304`)."},"409":{"description":"The connection has no author, or its author is no longer a member of the connection's team (`SC409`) — locking is reserved to an author who is still on the team. A departure clears a connection's author, so in practice this reports the missing author.\n"}}}},"/connections/{connectionId}/make-team":{"post":{"tags":["Connections"],"summary":"Make connection available to team","description":"Makes a locked connection visible to the whole team again (`visibility: team`) and clears the connection's\nentire access list. Only an admin of the locked connection can perform the flip. The connection's author\nis not changed.\n\nThe operation is idempotent — flipping an already team-visible connection succeeds, provided the caller has\nthe `account edit` permission; any residual entries on the connection's access list are still cleared.\n\nRequires the *Locked connections* feature to be enabled for the organization.\n","security":[{"token":["connections:write"]}],"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the connection."},"visibility":{"type":"string","enum":["team"],"description":"The visibility of the connection after the flip."}}}}},"examples":{"made-team":{"value":{"connection":{"id":15,"visibility":"team"}}}}}}},"400":{"description":"The *Locked connections* feature is not enabled for the organization (`IM903`, returned while the `web_api_locked_connections` feature flag is off).\n"},"403":{"description":"The caller is not an admin of the locked connection (`IM002`)."},"404":{"description":"The connection does not exist (`IM304`)."}}}},"/credential-requests/requests":{"post":{"tags":["Credential Requests"],"summary":"Create new Credential Request - deprecated","deprecated":true,"description":"Creates a new request for Credentials. Supports two flows: 1) Flow for new Make users, 2) Flow for existing Make users.","security":[{"token":["credential-requests:write"]}],"requestBody":{"required":true,"description":"Request body for creating a new Credential Request. Supports two provider flows - inviting a new user or referencing an existing Make user.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Request body for creating a new Credential Request. Supports two provider flows - inviting a new user or referencing an existing Make user.","required":["name","teamId","provider"],"properties":{"name":{"type":"string","maxLength":255,"description":"Name of the Request which will be displayed to the End Users who open it."},"teamId":{"type":"number","description":"ID of the Team the Credential Request should be bound to."},"description":{"type":"string","maxLength":512,"description":"Description of the Request which will be displayed to the End Users who open it."},"connections":{"type":"array","maxItems":32,"description":"Array of connections to include in the request.","items":{"type":"object","additionalProperties":false,"required":["type","appName","appModules","appVersion"],"properties":{"type":{"type":"string","maxLength":64,"description":"Type of the Connection to be included in the Request."},"label":{"type":"string","maxLength":128,"description":"Label of the Connection to be used instead of the default generated one."},"description":{"type":"string","maxLength":512,"description":"Description of the particular Connection to be displayed in the Request view."},"scope":{"type":"array","items":{"type":"string","maxLength":128},"description":"Array of Scopes that the Connection should ask for."},"nameOverride":{"type":"string","maxLength":255,"minLength":1,"description":"An optional name to use for the credential when created in the platform, overriding the default generated name."},"appName":{"type":"string","maxLength":255,"description":"Name of the application that this credential is associated with."},"appModules":{"type":"array","items":{"type":"string","maxLength":255},"description":"Array of modules/components within the application that will use this credential."},"appVersion":{"type":"string","maxLength":64,"description":"Version of the application at the time the credential was created."}}}},"keys":{"type":"array","maxItems":32,"description":"Array of keys to include in the request.","items":{"type":"object","additionalProperties":false,"required":["type","appName","appModules","appVersion"],"properties":{"type":{"type":"string","maxLength":64,"description":"Type of the Key to be included in the Request."},"label":{"type":"string","maxLength":128,"description":"Label of the Key to be used instead of the default generated one."},"description":{"type":"string","maxLength":512,"description":"Description of the particular Key to be displayed in the Request view."},"nameOverride":{"type":"string","maxLength":255,"minLength":1,"description":"An optional name to use for the credential when created in the platform, overriding the default generated name."},"appName":{"type":"string","maxLength":255,"description":"Name of the application that this credential is associated with."},"appModules":{"type":"array","items":{"type":"string","maxLength":255},"description":"Array of modules/components within the application that will use this credential."},"appVersion":{"type":"string","maxLength":64,"description":"Version of the application at the time the credential was created."}}}},"provider":{"description":"Provider information. Either an existing Make user ID or a new user to invite (name & email).","oneOf":[{"type":"object","additionalProperties":false,"required":["providerMakeUserId"],"description":"Existing Make user as provider. The user will be added to the team if not already a member.","properties":{"providerMakeUserId":{"type":"number","description":"ID of the Provider's Make User. The user will be added to the team that owns the credential request."}}},{"type":"object","required":["newUser"],"description":"New user to invite to the organization and add to the team.","properties":{"newUser":{"type":"object","additionalProperties":false,"description":"New user to invite to the organization and add to the team.","required":["name","email"],"properties":{"name":{"type":"string","maxLength":255,"description":"Name of the new user to invite."},"email":{"type":"string","maxLength":256,"description":"Email address of the new user to invite."}}}}}]}}},"example":{"teamId":123,"keys":[{"type":"apikeyauth","appModules":["MakeRequest:authenticationType:apiKey"],"appName":"http","appVersion":"4","description":"My custom note"},{"type":"basicauth","appModules":["MakeRequest:authenticationType:basicAuth"],"appName":"http","appVersion":"4","description":"My custom note"}],"connections":[{"type":"google","appModules":["addRow","deleteRow"],"scope":["https://www.googleapis.com/auth/drive","https://www.googleapis.com/auth/spreadsheets"],"appName":"google-sheets","appVersion":"2","description":"My custom note"}],"name":"HTTP API Key and Basic Auth credentials","description":"The request will ask for http auth keys and a Google Sheets connection","provider":{"providerMakeUserId":123}}}}},"responses":{"200":{"description":"Credential Request has been created successfully.","content":{"application/json":{"schema":{"type":"object","required":["request","publicUri"],"properties":{"request":{"type":"object","description":"A credential request object.","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential request."},"organizationId":{"type":"integer","description":"ID of the organization the request belongs to."},"teamId":{"type":"integer","description":"ID of the team the request belongs to."},"userId":{"type":"integer","description":"ID of the user who created the request."},"name":{"type":"string","description":"Name of the credential request."},"description":{"type":"string","description":"Description of the credential request."},"externalProviderId":{"type":"number","nullable":true,"description":"External provider identifier."},"makeProviderId":{"type":"number","nullable":true,"description":"Make provider identifier."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the request was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the request was last updated."},"expiresAt":{"type":"string","format":"date-time","description":"Timestamp when the request expires."},"status":{"type":"string","description":"Status of the credential request.","enum":["authorized","declined","incomplete","invalid","partially_authorized","pending"]},"shouldSendEmail":{"type":"boolean","description":"Whether an email should be sent for this request."},"emailSentAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the email was sent."}}},"publicUri":{"type":"string","format":"uri","description":"Public URI where the provider can access the credential request."}}},"example":{"request":{"id":"5964de38-0c19-4e65-afbf-d7182c9c5bb0","organizationId":789,"teamId":123,"userId":456,"name":"HTTP API Key and Basic Auth credentials","description":"The request will ask for http auth keys and a Google Sheets connection","externalProviderId":null,"makeProviderId":123,"createdAt":"2026-02-24T10:00:00Z","updatedAt":"2026-02-24T10:00:00Z","expiresAt":"2026-03-24T10:00:00Z","status":"pending","shouldSendEmail":true,"emailSentAt":null},"publicUri":"https://eu1.make.com/credence/123/5964de38-0c19-4e65-afbf-d7182c9c5bb0"}}}}}},"get":{"tags":["Credential Requests"],"summary":"List Credential Requests","description":"Retrieves a list of Credential Requests.","security":[{"token":["credential-requests:read"]}],"parameters":[{"name":"teamId","in":"query","required":true,"description":"Team ID to filter credential requests.","schema":{"type":"integer"}},{"name":"cols","in":"query","required":false,"description":"Not all properties of the Entity may be returned by default, for example because of their size. Using the Column Filter parameter, you can ask the Server to provide additional properties when needed.","style":"form","explode":true,"schema":{"type":"array","items":{"type":"string","enum":["id","organizationId","teamId","name","description","externalProviderId","createdAt","updatedAt","expiresAt","status","shouldSendEmail","emailSentAt","appNames","makeProvider","userId","makeProviderId"]}}},{"name":"userId","in":"query","required":false,"description":"User ID to filter credential requests.","schema":{"type":"number"}},{"name":"makeProviderId","in":"query","required":false,"description":"Make Provider ID to filter credential requests.","schema":{"type":"number"}},{"name":"status","in":"query","required":false,"description":"Status to filter credential requests.","schema":{"type":"string","enum":["authorized","declined","incomplete","invalid","partially_authorized","pending"]}},{"name":"name","in":"query","required":false,"description":"Name to filter credential requests.","schema":{"type":"string","minLength":0,"maxLength":255}}],"responses":{"200":{"description":"List of Credential Requests.","content":{"application/json":{"schema":{"type":"object","properties":{"requests":{"type":"array","items":{"type":"object","description":"A credential request list item with optional provider information.","allOf":[{"type":"object","description":"A credential request object.","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential request."},"organizationId":{"type":"integer","description":"ID of the organization the request belongs to."},"teamId":{"type":"integer","description":"ID of the team the request belongs to."},"userId":{"type":"integer","description":"ID of the user who created the request."},"name":{"type":"string","description":"Name of the credential request."},"description":{"type":"string","description":"Description of the credential request."},"externalProviderId":{"type":"number","nullable":true,"description":"External provider identifier."},"makeProviderId":{"type":"number","nullable":true,"description":"Make provider identifier."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the request was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the request was last updated."},"expiresAt":{"type":"string","format":"date-time","description":"Timestamp when the request expires."},"status":{"type":"string","description":"Status of the credential request.","enum":["authorized","declined","incomplete","invalid","partially_authorized","pending"]},"shouldSendEmail":{"type":"boolean","description":"Whether an email should be sent for this request."},"emailSentAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the email was sent."}}},{"type":"object","properties":{"appNames":{"type":"array","items":{"type":"string"},"description":"Names of apps associated with this request."},"makeProvider":{"type":"object","nullable":true,"description":"Make provider information.","properties":{"id":{"type":"integer","description":"Provider user ID."},"email":{"type":"string","description":"Provider email address."},"name":{"type":"string","description":"Provider name."}}}}}]}}}},"example":{"requests":[{"id":"550e8400-e29b-41d4-a716-446655440000","organizationId":1,"teamId":123,"name":"Google Workspace Access","description":"Request access to Google Workspace APIs","externalProviderId":null,"createdAt":"2025-12-12T10:00:00Z","updatedAt":"2025-12-12T10:00:00Z","expiresAt":"2026-01-12T10:00:00Z","status":"pending","shouldSendEmail":true,"emailSentAt":null,"appNames":["google"],"makeProvider":{"id":456,"email":"provider@example.com","name":"John Doe"}}]}}}}}}},"/credential-requests/requests/v2":{"post":{"tags":["Credential Requests"],"summary":"Create new Credential Request (V2)","description":"Creates a new request for Credentials using app and module selections.\nCredentials (connections/keys) are automatically derived from the selected modules using the modules-with-credentials API.\n\nSupports two provider flows:\n1. **Existing Make user** - Reference an existing Make user by their ID. The user will be added to the team if not already a member.\n2. **New user invitation** - Invite a new user by providing their name and email.\n","security":[{"token":["credential-requests:write"]}],"requestBody":{"required":true,"description":"V2 Request body for creating a Credential Request. Credentials are derived from app and module selections.","content":{"application/json":{"schema":{"type":"object","description":"V2 Request body for creating a Credential Request. Credentials are derived from app and module selections.","additionalProperties":false,"required":["name","teamId","credentials","provider"],"properties":{"name":{"type":"string","maxLength":255,"description":"Name of the Request which will be displayed to the End Users who open it."},"teamId":{"type":"integer","minimum":1,"description":"ID of the Team the Credential Request should be bound to."},"description":{"type":"string","maxLength":512,"description":"Description of the Request which will be displayed to the End Users who open it."},"credentials":{"type":"array","minItems":1,"maxItems":64,"description":"Array of app/module selections to derive credentials from.","items":{"type":"object","description":"App and module selection for credential derivation.","additionalProperties":false,"required":["appName","appModules"],"properties":{"appName":{"type":"string","maxLength":255,"description":"Name of the application to request credentials for."},"appModules":{"type":"array","minItems":1,"description":"Array of module IDs to include. Use [\"*\"] to select all modules with credentials.","items":{"type":"string","maxLength":255,"description":"Module ID within the application. Use \"*\" to select all modules."}},"appVersion":{"type":"integer","minimum":0,"description":"Version of the application. If not provided, it defaults to the latest available version."},"nameOverride":{"type":"string","minLength":1,"maxLength":255,"description":"An optional name to use for the credential when created in the platform, overriding the default generated name."},"description":{"type":"string","maxLength":512,"description":"Description for this credential to be displayed in the Request view."}}}},"provider":{"description":"Provider information. Either an existing Make user ID or a new user to invite (name & email).","oneOf":[{"type":"object","additionalProperties":false,"required":["providerMakeUserId"],"description":"Existing Make user as provider. The user will be added to the team if not already a member.","properties":{"providerMakeUserId":{"type":"number","description":"ID of the Provider's Make User. The user will be added to the team that owns the credential request."}}},{"type":"object","required":["newUser"],"description":"New user to invite to the organization and add to the team.","properties":{"newUser":{"type":"object","additionalProperties":false,"description":"New user to invite to the organization and add to the team.","required":["name","email"],"properties":{"name":{"type":"string","maxLength":255,"description":"Name of the new user to invite."},"email":{"type":"string","maxLength":256,"description":"Email address of the new user to invite."}}}}}]}}},"example":{"teamId":123,"name":"Slack and Google Sheets Integration","description":"Please authorize Slack and Google Sheets access","credentials":[{"appName":"slack","appModules":["SendMessage","WatchMessages"],"appVersion":2},{"appName":"google-sheets","appModules":["*"]}],"provider":{"providerMakeUserId":456}}}}},"responses":{"200":{"description":"Credential Request has been created successfully.","content":{"application/json":{"schema":{"type":"object","description":"Response for V2 Credential Request creation.","required":["request","publicUri"],"properties":{"request":{"type":"object","description":"A credential request object.","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential request."},"organizationId":{"type":"integer","description":"ID of the organization the request belongs to."},"teamId":{"type":"integer","description":"ID of the team the request belongs to."},"userId":{"type":"integer","description":"ID of the user who created the request."},"name":{"type":"string","description":"Name of the credential request."},"description":{"type":"string","description":"Description of the credential request."},"externalProviderId":{"type":"number","nullable":true,"description":"External provider identifier."},"makeProviderId":{"type":"number","nullable":true,"description":"Make provider identifier."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the request was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the request was last updated."},"expiresAt":{"type":"string","format":"date-time","description":"Timestamp when the request expires."},"status":{"type":"string","description":"Status of the credential request.","enum":["authorized","declined","incomplete","invalid","partially_authorized","pending"]},"shouldSendEmail":{"type":"boolean","description":"Whether an email should be sent for this request."},"emailSentAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the email was sent."}}},"publicUri":{"type":"string","format":"uri","description":"Public URI for accessing the credential request."}}},"example":{"request":{"id":"7a9b8c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d","organizationId":789,"teamId":123,"userId":456,"name":"HTTP API Key and Basic Auth credentials","description":"The request will ask for http auth keys and a Google Sheets connection","externalProviderId":null,"makeProviderId":123,"createdAt":"2026-02-24T10:00:00Z","updatedAt":"2026-02-24T10:00:00Z","expiresAt":"2026-03-24T10:00:00Z","status":"pending","shouldSendEmail":true,"emailSentAt":null},"publicUri":"https://eu1.make.com/credence/123/7a9b8c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d"}}}}}}},"/credential-requests/requests/{requestId}":{"get":{"tags":["Credential Requests"],"summary":"Get Credential Request","description":"Retrieves a single Credential Request.","security":[{"token":["credential-requests:read"]}],"parameters":[{"name":"requestId","in":"path","required":true,"description":"ID of the Credential Request.","schema":{"type":"string","format":"uuid"}},{"name":"cols","in":"query","required":false,"description":"Not all properties of the Entity may be returned by default, for example because of their size. Using the Column Filter parameter, you can ask the Server to provide additional properties when needed.","style":"form","explode":true,"schema":{"type":"array","items":{"type":"string","enum":["id","organizationId","teamId","name","description","externalProviderId","createdAt","updatedAt","expiresAt","status","shouldSendEmail","emailSentAt","appNames","makeProvider","userId","makeProviderId"]}}}],"responses":{"200":{"description":"Credential Request.","content":{"application/json":{"schema":{"type":"object","properties":{"request":{"type":"object","description":"A credential request with detailed provider information.","allOf":[{"type":"object","description":"A credential request object.","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential request."},"organizationId":{"type":"integer","description":"ID of the organization the request belongs to."},"teamId":{"type":"integer","description":"ID of the team the request belongs to."},"userId":{"type":"integer","description":"ID of the user who created the request."},"name":{"type":"string","description":"Name of the credential request."},"description":{"type":"string","description":"Description of the credential request."},"externalProviderId":{"type":"number","nullable":true,"description":"External provider identifier."},"makeProviderId":{"type":"number","nullable":true,"description":"Make provider identifier."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the request was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the request was last updated."},"expiresAt":{"type":"string","format":"date-time","description":"Timestamp when the request expires."},"status":{"type":"string","description":"Status of the credential request.","enum":["authorized","declined","incomplete","invalid","partially_authorized","pending"]},"shouldSendEmail":{"type":"boolean","description":"Whether an email should be sent for this request."},"emailSentAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the email was sent."}}},{"type":"object","properties":{"makeProvider":{"type":"object","nullable":true,"description":"Make provider information.","properties":{"id":{"type":"integer"},"email":{"type":"string"},"name":{"type":"string"}}}}}]}}},"example":{"request":{"id":"550e8400-e29b-41d4-a716-446655440000","organizationId":1,"teamId":123,"userId":789,"name":"Google Workspace Access","description":"Request access to Google Workspace APIs for automation","externalProviderId":null,"makeProviderId":"456","createdAt":"2025-12-12T10:00:00Z","updatedAt":"2025-12-12T10:00:00Z","expiresAt":"2026-01-12T10:00:00Z","status":"pending","shouldSendEmail":true,"emailSentAt":null,"makeProvider":{"id":456,"email":"provider@example.com","name":"John Doe"}}}}}}}},"delete":{"tags":["Credential Requests"],"summary":"Delete Credential Request","description":"Deletes the given Credential Request.","security":[{"token":["credential-requests:write"]}],"parameters":[{"name":"requestId","in":"path","required":true,"description":"ID of the Credential Request.","schema":{"type":"string","format":"uuid"}},{"name":"confirmed","in":"query","required":false,"description":"When true, also deletes credentials (connections and keys) associated with the credential request. When false or omitted the API will return an error if there are any associated credentials, preventing accidental deletion of credentials.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Credential Request has been deleted successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","description":"Indicates if the request was deleted."}}},"example":{"deleted":true}}}}}}},"/credential-requests/requests/{requestId}/detail":{"get":{"tags":["Credential Requests"],"summary":"Get Credential Request Detail","description":"Retrieves detail of a single Credential Request with associated credentials.\nThis endpoint has been enhanced to include all credentials associated with the request in a single response,\neliminating the need for additional API calls.\n","security":[{"token":["credential-requests:read"]}],"parameters":[{"name":"requestId","in":"path","required":true,"description":"ID of the Credential Request.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Detail of the Credential Request with associated credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"requestDetail":{"type":"object","description":"Detailed credential request including associated credentials, provider, and requester information.","allOf":[{"type":"object","description":"A credential request object.","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential request."},"organizationId":{"type":"integer","description":"ID of the organization the request belongs to."},"teamId":{"type":"integer","description":"ID of the team the request belongs to."},"userId":{"type":"integer","description":"ID of the user who created the request."},"name":{"type":"string","description":"Name of the credential request."},"description":{"type":"string","description":"Description of the credential request."},"externalProviderId":{"type":"number","nullable":true,"description":"External provider identifier."},"makeProviderId":{"type":"number","nullable":true,"description":"Make provider identifier."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the request was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the request was last updated."},"expiresAt":{"type":"string","format":"date-time","description":"Timestamp when the request expires."},"status":{"type":"string","description":"Status of the credential request.","enum":["authorized","declined","incomplete","invalid","partially_authorized","pending"]},"shouldSendEmail":{"type":"boolean","description":"Whether an email should be sent for this request."},"emailSentAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the email was sent."}}},{"type":"object","properties":{"makeProvider":{"type":"object","nullable":true,"description":"Make provider information.","properties":{"id":{"type":"integer","description":"Provider user ID."},"email":{"type":"string","description":"Provider email address."},"name":{"type":"string","description":"Provider name."}}},"user":{"type":"object","description":"User who created the request.","properties":{"id":{"type":"integer","description":"User ID."},"email":{"type":"string","description":"User email address."},"name":{"type":"string","description":"User name."}}},"credentials":{"type":"array","description":"List of credentials associated with this request.","items":{"type":"object","description":"A credential object (connection or key).","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential."},"requestId":{"type":"string","format":"uuid","description":"ID of the parent credential request."},"component":{"type":"string","description":"Component type of the credential.","enum":["account","keychain"]},"type":{"type":"string","description":"Type of the credential.","enum":["oauth","basic","key"]},"name":{"type":"string","description":"Internal name of the credential."},"label":{"type":"string","description":"Display label for the credential."},"description":{"type":"string","description":"Description of the credential."},"scope":{"type":"array","items":{"type":"string"},"description":"Requested scopes for the credential."},"remoteId":{"type":"string","description":"Remote identifier after creation."},"remoteScope":{"type":"array","items":{"type":"string"},"description":"Scopes granted by the remote service."},"tokenId":{"type":"string","format":"uuid","description":"Associated token ID."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the credential was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the credential was last updated."},"state":{"type":"string","description":"State of an individual credential.","enum":["authorized","declined","incomplete","invalid","pending","reauthorizing"]},"declineReason":{"type":"string","description":"Reason for declining the credential."},"appName":{"type":"string","description":"Name of the application associated with this credential."},"appModules":{"type":"array","items":{"type":"string"},"description":"Modules within the application that use this credential."},"appVersion":{"type":"string","description":"Version of the application."},"nameOverride":{"type":"string","description":"Custom name override for the credential."}}}}}}]}}},"example":{"requestDetail":{"id":"550e8400-e29b-41d4-a716-446655440000","organizationId":1,"teamId":123,"name":"Google Workspace Access","description":"Request access to Google Workspace APIs for automation","externalProviderId":null,"createdAt":"2025-12-12T10:00:00Z","updatedAt":"2025-12-12T10:00:00Z","expiresAt":"2026-01-12T10:00:00Z","status":"partially_authorized","shouldSendEmail":true,"emailSentAt":"2025-12-12T10:05:00Z","makeProvider":{"id":456,"email":"provider@example.com","name":"John Doe"},"user":{"id":789,"email":"requester@example.com","name":"Jane Smith"},"credentials":[{"id":"660e8400-e29b-41d4-a716-446655440001","requestId":"550e8400-e29b-41d4-a716-446655440000","component":"account","type":"oauth","name":"google","label":"Google Drive Connection","description":"Access to Google Drive for file automation","scope":["drive.readonly","drive.file"],"remoteId":"12345","remoteScope":["drive.readonly","drive.file"],"tokenId":"770e8400-e29b-41d4-a716-446655440002","createdAt":"2025-12-12T10:00:00Z","updatedAt":"2025-12-12T10:30:00Z","state":"authorized","declineReason":null,"appName":"google","appModules":["Google Drive"],"appVersion":"1.0.0"},{"id":"660e8400-e29b-41d4-a716-446655440002","requestId":"550e8400-e29b-41d4-a716-446655440000","component":"account","type":"oauth","name":"google-calendar","label":"Google Calendar Connection","description":"Access to Google Calendar for scheduling","scope":["calendar.readonly"],"remoteId":null,"remoteScope":[],"tokenId":null,"createdAt":"2025-12-12T10:00:00Z","updatedAt":"2025-12-12T10:15:00Z","state":"pending","declineReason":null,"appName":"google-calendar","appModules":["Google Calendar"],"appVersion":"1.0.0"}]}}}}}}}},"/credential-requests/credentials/{credentialId}/decline":{"post":{"tags":["Credential Requests"],"summary":"Decline Credential","description":"Declines a credential by setting its state to declined and recording the reason. This endpoint is idempotent and can be used to update the decline reason of an already declined credential.","security":[{"token":["credential-requests:write"]}],"parameters":[{"name":"credentialId","in":"path","required":true,"description":"ID of the Credential.","schema":{"type":"string","format":"uuid"}},{"name":"cols","in":"query","required":false,"description":"Not all properties of the Entity may be returned by default, for example because of their size. Using the Column Filter parameter, you can ask the Server to provide additional properties when needed.","style":"form","explode":true,"schema":{"type":"array","items":{"type":"string","enum":["id","requestId","component","type","name","label","description","scope","remoteId","remoteScope","tokenId","createdAt","updatedAt","state","declineReason","appName","appModules","appVersion"]}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":2048,"description":"The reason why the credential was declined. This will be visible to support teams and helps with troubleshooting."}}},"example":{"reason":"Unable to authorize - account does not have required permissions"}}}},"responses":{"200":{"description":"Credential has been declined successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"credential":{"type":"object","description":"A credential object (connection or key).","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential."},"requestId":{"type":"string","format":"uuid","description":"ID of the parent credential request."},"component":{"type":"string","description":"Component type of the credential.","enum":["account","keychain"]},"type":{"type":"string","description":"Type of the credential.","enum":["oauth","basic","key"]},"name":{"type":"string","description":"Internal name of the credential."},"label":{"type":"string","description":"Display label for the credential."},"description":{"type":"string","description":"Description of the credential."},"scope":{"type":"array","items":{"type":"string"},"description":"Requested scopes for the credential."},"remoteId":{"type":"string","description":"Remote identifier after creation."},"remoteScope":{"type":"array","items":{"type":"string"},"description":"Scopes granted by the remote service."},"tokenId":{"type":"string","format":"uuid","description":"Associated token ID."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the credential was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the credential was last updated."},"state":{"type":"string","description":"State of an individual credential.","enum":["authorized","declined","incomplete","invalid","pending","reauthorizing"]},"declineReason":{"type":"string","description":"Reason for declining the credential."},"appName":{"type":"string","description":"Name of the application associated with this credential."},"appModules":{"type":"array","items":{"type":"string"},"description":"Modules within the application that use this credential."},"appVersion":{"type":"string","description":"Version of the application."},"nameOverride":{"type":"string","description":"Custom name override for the credential."}}}}},"example":{"credential":{"id":"660e8400-e29b-41d4-a716-446655440001","requestId":"550e8400-e29b-41d4-a716-446655440000","component":"account","type":"oauth","name":"google","label":"Google Drive Connection","description":"Access to Google Drive for file automation","scope":["drive.readonly","drive.file"],"remoteId":null,"remoteScope":[],"tokenId":null,"createdAt":"2025-12-12T10:00:00Z","updatedAt":"2025-12-12T11:00:00Z","state":"declined","declineReason":"Unable to authorize - account does not have required permissions","appName":"google","appModules":[],"appVersion":"1.0.0"}}}}}}}},"/credential-requests/credentials/{credentialId}/delete-remote":{"post":{"tags":["Credential Requests"],"summary":"Delete Remote Credential","description":"Deletes a credential from the remote platform (Make Web API) and resets its state to pending. The credential can then be re-created through the normal creation flow.","security":[{"token":["credential-requests:write"]}],"parameters":[{"name":"credentialId","in":"path","required":true,"description":"ID of the Credential.","schema":{"type":"string","format":"uuid"}},{"name":"cols","in":"query","required":false,"description":"Not all properties of the Entity may be returned by default, for example because of their size. Using the Column Filter parameter, you can ask the Server to provide additional properties when needed.","style":"form","explode":true,"schema":{"type":"array","items":{"type":"string","enum":["id","requestId","component","type","name","label","description","scope","remoteId","remoteScope","tokenId","createdAt","updatedAt","state","declineReason","appName","appModules","appVersion"]}}}],"responses":{"200":{"description":"Credential has been deleted from remote and reset to pending.","content":{"application/json":{"schema":{"type":"object","properties":{"credential":{"type":"object","description":"A credential object (connection or key).","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential."},"requestId":{"type":"string","format":"uuid","description":"ID of the parent credential request."},"component":{"type":"string","description":"Component type of the credential.","enum":["account","keychain"]},"type":{"type":"string","description":"Type of the credential.","enum":["oauth","basic","key"]},"name":{"type":"string","description":"Internal name of the credential."},"label":{"type":"string","description":"Display label for the credential."},"description":{"type":"string","description":"Description of the credential."},"scope":{"type":"array","items":{"type":"string"},"description":"Requested scopes for the credential."},"remoteId":{"type":"string","description":"Remote identifier after creation."},"remoteScope":{"type":"array","items":{"type":"string"},"description":"Scopes granted by the remote service."},"tokenId":{"type":"string","format":"uuid","description":"Associated token ID."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the credential was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the credential was last updated."},"state":{"type":"string","description":"State of an individual credential.","enum":["authorized","declined","incomplete","invalid","pending","reauthorizing"]},"declineReason":{"type":"string","description":"Reason for declining the credential."},"appName":{"type":"string","description":"Name of the application associated with this credential."},"appModules":{"type":"array","items":{"type":"string"},"description":"Modules within the application that use this credential."},"appVersion":{"type":"string","description":"Version of the application."},"nameOverride":{"type":"string","description":"Custom name override for the credential."}}}}},"example":{"credential":{"id":"660e8400-e29b-41d4-a716-446655440001","requestId":"550e8400-e29b-41d4-a716-446655440000","component":"account","type":"oauth","name":"google","label":"Google Drive Connection","description":"Access to Google Drive for file automation","scope":["drive.readonly","drive.file"],"remoteId":null,"remoteScope":[],"tokenId":null,"createdAt":"2025-12-12T10:00:00Z","updatedAt":"2025-12-12T12:00:00Z","state":"pending","declineReason":null,"appName":"google","appModules":[],"appVersion":"1.0.0"}}}}}}}},"/credential-requests/credentials/{credentialId}/request-reauthorize":{"post":{"tags":["Credential Requests"],"summary":"Request Credential Reauthorization","description":"Tests the OAuth connection and transitions to reauthorizing state if invalid. Returns an error if the connection is still valid.","security":[{"token":["credential-requests:write"]}],"parameters":[{"name":"credentialId","in":"path","required":true,"description":"ID of the Credential.","schema":{"type":"string","format":"uuid"}},{"name":"cols","in":"query","required":false,"description":"Not all properties of the Entity may be returned by default, for example because of their size. Using the Column Filter parameter, you can ask the Server to provide additional properties when needed.","style":"form","explode":true,"schema":{"type":"array","items":{"type":"string","enum":["id","requestId","component","type","name","label","description","scope","remoteId","remoteScope","tokenId","createdAt","updatedAt","state","declineReason","appName","appModules","appVersion"]}}}],"responses":{"200":{"description":"Credential transitioned to reauthorizing state.","content":{"application/json":{"schema":{"type":"object","properties":{"credential":{"type":"object","description":"A credential object (connection or key).","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential."},"requestId":{"type":"string","format":"uuid","description":"ID of the parent credential request."},"component":{"type":"string","description":"Component type of the credential.","enum":["account","keychain"]},"type":{"type":"string","description":"Type of the credential.","enum":["oauth","basic","key"]},"name":{"type":"string","description":"Internal name of the credential."},"label":{"type":"string","description":"Display label for the credential."},"description":{"type":"string","description":"Description of the credential."},"scope":{"type":"array","items":{"type":"string"},"description":"Requested scopes for the credential."},"remoteId":{"type":"string","description":"Remote identifier after creation."},"remoteScope":{"type":"array","items":{"type":"string"},"description":"Scopes granted by the remote service."},"tokenId":{"type":"string","format":"uuid","description":"Associated token ID."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the credential was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the credential was last updated."},"state":{"type":"string","description":"State of an individual credential.","enum":["authorized","declined","incomplete","invalid","pending","reauthorizing"]},"declineReason":{"type":"string","description":"Reason for declining the credential."},"appName":{"type":"string","description":"Name of the application associated with this credential."},"appModules":{"type":"array","items":{"type":"string"},"description":"Modules within the application that use this credential."},"appVersion":{"type":"string","description":"Version of the application."},"nameOverride":{"type":"string","description":"Custom name override for the credential."}}}}},"example":{"credential":{"id":"550e8400-e29b-41d4-a716-446655440000","requestId":"660e8400-e29b-41d4-a716-446655440001","component":"account","type":"oauth","name":"google-oauth","label":"Google OAuth","description":"OAuth connection for Google services","scope":["https://www.googleapis.com/auth/spreadsheets"],"remoteId":"12345","remoteScope":["https://www.googleapis.com/auth/spreadsheets"],"tokenId":"f9e8d7c6-b5a4-3210-fedc-ba9876543210","createdAt":"2025-12-12T10:00:00Z","updatedAt":"2025-12-12T12:00:00Z","state":"reauthorizing","declineReason":null,"appName":"google-sheets","appModules":["addRow","deleteRow"],"appVersion":"2"}}}}}}}},"/credential-requests/actions/create":{"post":{"tags":["Credential Requests"],"summary":"Create Action","description":"Creates a new Action for a Credential Creation. Either 'connection' or 'key' must be provided in the request body, but not both.","security":[{"token":["credential-requests:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Request body for creating a new action for credential creation.","properties":{"name":{"type":"string","maxLength":255,"description":"Name of the Request which will be displayed to the End Users who open it."},"description":{"type":"string","maxLength":512,"description":"Description of the Request which will be displayed to the End Users who open it."},"connection":{"type":"object","required":["teamId","accountName"],"description":"Connection creation parameters for action.","properties":{"teamId":{"type":"integer","minimum":1,"description":"ID of the Team to which the Connection will belong."},"accountName":{"type":"string","minLength":1,"description":"Name of the Connection account type to be created via the Action."},"name":{"type":"string","minLength":1,"description":"Human-readable name for the Connection to be created via the Action."},"scopes":{"type":"array","minItems":1,"items":{"type":"string","maxLength":128},"description":"Array of Scopes to be added."},"appName":{"type":"string","maxLength":255,"description":"Name of the application that this credential is associated with."},"appModules":{"type":"array","items":{"type":"string","maxLength":255},"description":"Array of modules/components within the application that will use this credential."},"appVersion":{"type":"string","maxLength":64,"description":"Version of the application at the time the credential was created."}}},"key":{"type":"object","required":["teamId","type"],"description":"Key creation parameters for action.","properties":{"teamId":{"type":"integer","minimum":1,"description":"ID of the Team to which the Key will belong."},"type":{"type":"string","minLength":1,"description":"Type identifier for the Key to be created via the Action."},"name":{"type":"string","minLength":1,"description":"Human-readable name for the Key to be created via the Action."},"appName":{"type":"string","maxLength":255,"description":"Name of the application that this credential is associated with."},"appModules":{"type":"array","items":{"type":"string","maxLength":255},"description":"Array of modules/components within the application that will use this credential."},"appVersion":{"type":"string","maxLength":64,"description":"Version of the application at the time the credential was created."}}}}},"examples":{"connection":{"summary":"Create connection action","description":"Example of creating an action for a new connection","value":{"name":"Google Drive Access","description":"Action to create Google Drive connection","connection":{"teamId":123,"accountName":"google","name":"My Google Drive","scopes":["drive.readonly","drive.file","apps.read"],"appName":"google","appModules":["Google Drive"],"appVersion":"1.0.0"}}},"key":{"summary":"Create key action","description":"Example of creating an action for a new key","value":{"name":"API Key Access","description":"Action to create API key","key":{"teamId":456,"type":"api_key","name":"Production API Key","appName":"custom-app","appModules":["REST API"],"appVersion":"2.0.0"}}}}}}},"responses":{"200":{"description":"Credential Request to be used for completing the Action.","content":{"application/json":{"schema":{"type":"object","required":["request","publicUri"],"properties":{"request":{"type":"object","description":"A credential request object.","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the credential request."},"organizationId":{"type":"integer","description":"ID of the organization the request belongs to."},"teamId":{"type":"integer","description":"ID of the team the request belongs to."},"userId":{"type":"integer","description":"ID of the user who created the request."},"name":{"type":"string","description":"Name of the credential request."},"description":{"type":"string","description":"Description of the credential request."},"externalProviderId":{"type":"number","nullable":true,"description":"External provider identifier."},"makeProviderId":{"type":"number","nullable":true,"description":"Make provider identifier."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the request was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the request was last updated."},"expiresAt":{"type":"string","format":"date-time","description":"Timestamp when the request expires."},"status":{"type":"string","description":"Status of the credential request.","enum":["authorized","declined","incomplete","invalid","partially_authorized","pending"]},"shouldSendEmail":{"type":"boolean","description":"Whether an email should be sent for this request."},"emailSentAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the email was sent."}}},"publicUri":{"type":"string","format":"uri","description":"Public URI for completing the action."}}},"example":{"request":{"id":"550e8400-e29b-41d4-a716-446655440000","organizationId":1,"teamId":123,"userId":789,"name":"Google Drive Access","description":"Action to create Google Drive connection","externalProviderId":null,"makeProviderId":null,"createdAt":"2025-12-12T10:00:00Z","updatedAt":"2025-12-12T10:00:00Z","expiresAt":"2026-01-12T10:00:00Z","status":"pending","shouldSendEmail":false,"emailSentAt":null},"publicUri":"https://www.make.com/credential-requests/action/550e8400-e29b-41d4-a716-446655440000"}}}}}}},"/credential-requests/apps/{name}/{version}/modules-with-credentials":{"get":{"tags":["Credential Requests"],"summary":"List App Modules with Credentials","description":"Retrieves all modules with credential requirements for a specific app and version.\n\nFor each module, this endpoint returns:\n- Module identification (`id`, `name`, `label`)\n- Required credential type (e.g., `account:slack2`)\n- OAuth scopes required by the module\n- Whether the module is a hook-based trigger\n\n**Custom/SDK Apps**: To query custom (SDK) apps, prefix the app name with `app#` (URL-encoded as `app%23`).\nFor example: `/credential-requests/apps/app%23my-custom-app/1/modules-with-credentials`\n","security":[{"token":["apps:read"]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","pattern":"^(app#)?[a-z][0-9a-z-]+[0-9a-z]$","minLength":3,"maxLength":135},"description":"The name of the app. Must start with a lowercase letter, contain only lowercase letters, numbers, and hyphens, and end with a letter or number. Minimum 3 characters (e.g., `a-b`, `abc`).\n\nFor SDK/custom apps, use the `app#` prefix (URL-encoded as `app%23`).\n","example":"slack"},{"name":"version","in":"path","required":true,"schema":{"oneOf":[{"type":"integer","minimum":1},{"type":"string","enum":["latest"]}]},"description":"The major version of the app. Use a specific version number (e.g., `1`, `2`, `4`) or `latest` to get the most recent version.\n","example":4}],"responses":{"200":{"description":"Successful response with list of app modules and their credential requirements.","headers":{"x-imt-package-name":{"schema":{"type":"string"},"description":"The name of the app package.","example":"slack"},"x-imt-package-version":{"schema":{"type":"string"},"description":"The full version string of the app package.","example":"4.0.0"}},"content":{"application/json":{"schema":{"type":"object","properties":{"appModules":{"type":"array","description":"List of modules with their credential requirements.","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the module credential configuration.\nFor modules with a single credential, this matches the module name.\nFor modules with multiple credentials, includes additional context (e.g., `moduleName:paramName`).\n"},"name":{"type":"string","description":"The technical name of the module."},"label":{"type":"string","description":"Human-readable display name of the module."},"type":{"type":"string","description":"The credential type required by the module.\nFormat is typically `account:<app-name>` or `keychain:<app-name>`.\nMultiple types may be comma-separated (e.g., `account:slack2,slack3`).\n"},"scope":{"type":"array","description":"List of OAuth scopes required by this module.","items":{"type":"string"}},"hook":{"type":"boolean","description":"Indicates whether this module is a hook-based trigger."}}}}}},"examples":{"slack-modules":{"summary":"Slack app modules","description":"Example response for Slack app version 4","value":{"appModules":[{"id":"CreateMessage","name":"CreateMessage","label":"Send a Message","type":"account:slack2,slack3","scope":["chat:write","chat:write.public","chat:write.customize","channels:read","groups:read","im:read","mpim:read","users:read"],"hook":false},{"id":"WatchMessages","name":"WatchMessages","label":"Watch Public Channel Messages","type":"account:slack2","scope":["channels:history","channels:read"],"hook":false},{"id":"watchInteractivityEvents","name":"watchInteractivityEvents","label":"Watch Interactive Events","type":"account:slack2,slack3","scope":[],"hook":true}]}}}}}},"404":{"description":"App or package not found.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code."},"message":{"type":"string","description":"Error message."}}},"example":{"code":"SC404","message":"Package not found."}}}}}}},"/custom-property-structures":{"get":{"tags":["Custom properties"],"summary":"List custom property structures","description":"Gets a list of custom properties structures in the organization.","security":[{"token":["custom-property-structures:read"]}],"parameters":[{"name":"organizationId","in":"query","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":57}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"customPropertyStructures":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"created":{"type":"string","format":"date-time"},"belongers":{"type":"array","items":{"type":"object","properties":{"belongerId":{"type":"integer"},"belongerType":{"type":"string"},"associatedTypes":{"type":"array","items":{"type":"string"}}}}}}}}}},"example":{"customPropertyStructures":[{"id":2,"created":"2023-06-27T22:00:00.000Z","belongers":[{"belongerId":57,"belongerType":"organization","associatedTypes":["scenario"]}]}]}}}}}},"post":{"tags":["Custom properties"],"summary":"Create a custom property structure","description":"Creates a custom properties structure. You can have only one custom properties structure for each combination of `associatedType`, `belongerType`and `belongerId` values.\n\nFor example, you can create only one custom properties structure for scenarios in a specific organization.\n\nTo create a structure for custom scenario properties, fill in the request body:\n\n- `associatedType`: `scenario`\n- `belongerType`: `organization`\n\nCheck out the example API call.\n\nTo define the custom properties structure items, use the API call [to create custom properties structure item](./structure-items/post--custom-property-structures--custompropertystructureid--custom-property-structure-items.md).\n","security":[{"token":["custom-property-structures:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"associatedType":{"description":"The type of the entity which uses the custom properties structure. Fill in `scenario` to create custom scenario properties structure.","type":"string"},"belongerType":{"description":"The type of the entity that owns the custom properties structure. Fill in `organization` to create custom scenario properties structure.","type":"string"},"belongerId":{"description":"The ID of the entity that owns the custom properties structure.","type":"integer"}},"required":["associatedType","belongerType","belongerId"]},"example":{"associatedType":"scenario","belongerType":"organization","belongerId":57}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"customPropertyStructure":{"type":"object","properties":{"id":{"type":"integer"},"created":{"type":"string","format":"date-time"},"belongers":{"type":"array","items":{"type":"object","properties":{"belongerId":{"type":"integer"},"belongerType":{"type":"string"},"associatedTypes":{"type":"array","items":{"type":"string"}}}}}}}}},"example":{"customPropertyStructure":{"id":2,"belongers":[{"belongerId":57,"belongerType":"organization","associatedTypes":["scenario"]}],"created":"2023-06-27T22:00:00.000Z"}}}}}}}},"/custom-property-structures/{customPropertyStructureId}/custom-property-structure-items":{"get":{"tags":["Custom properties / Structure items"],"summary":"List custom property structure items","description":"Gets the list of structure items in the specified custom properties structure.\n\nUse the API call `GET /custom-property-structures?{organizationId}` to get the ID of the custom property structure.\n","security":[{"token":["custom-property-structures:read"]}],"parameters":[{"name":"customPropertyStructureId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the custom property structure.\nUse the API call `GET /custom-property-structures?organizationId={organizationId}` to get the ID of a custom property structure.","example":2},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","label","description","type","options","required"]}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"},{"name":"pg[sortBy]","in":"query","schema":{"type":"string","enum":["id","name","label","description","type","required"]},"description":"Specify the custom property item attribute. The custom property items in the response are sorted by the value of the attribute."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"customPropertyStructureItems":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["boolean","number","shortText","longText","date","dropdown","multiselect"]},"required":{"type":"boolean"},"options":{"type":"array","nullable":true,"items":{"type":"object","properties":{"value":{"type":"string"}},"required":["value"]}}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"example":{"customPropertyStructureItems":[{"id":54,"name":"highPriority","label":"High Priority","description":"Specify whether the scenario is high priority or not.","type":"boolean","options":null,"required":false},{"id":55,"name":"location","label":"Location","description":"Location of the team managing the scenario.","type":"shortText","options":null,"required":false},{"id":56,"name":"description","label":"Description","description":"Custom description of the scenario.","type":"longText","options":null,"required":false},{"id":57,"name":"customId","label":"Company ID","description":"ID managed by our company","type":"number","options":null,"required":true},{"id":134,"name":"performanceCheck","label":"Performance check due date","description":"The date when we should check whether the scenario remains valid and can be improved.","type":"string","format":"date","options":null,"required":true},{"id":43,"name":"companyTeam","label":"Company Team","description":"The team that manages the scenario","type":"dropdown","options":[{"value":"Marketing"},{"value":"Product"},{"value":"Engineering"}],"required":true},{"id":53,"name":"category","label":"Category","description":"The category tags of the scenarios","type":"multiselect","options":[{"value":"Eshop"},{"value":"Notifications"},{"value":"Routing"},{"value":"Products"}],"required":false}],"pg":{"sortBy":"id","limit":10000,"sortDir":"asc","offset":0}}}}}}},"post":{"tags":["Custom properties / Structure items"],"summary":"Create a custom property structure item","description":"Creates custom properties structure items.\n\nAfter creating a structure item, you cannot change its `name` and `type`.\n\nTo add data to the custom properties, use the API call to [fill in custom properties data](../../scenarios/custom-properties-data/post--scenarios--scenarioid--custom-properties.md).\n","security":[{"token":["custom-property-structures:write"]}],"parameters":[{"name":"customPropertyStructureId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the custom property structure.\nUse the API call `GET /custom-property-structures?organizationId={organizationId}` to get the ID of a custom property structure.","example":2}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"The ID of the structure item. The `name` has to be unique in the custom properties structure.","type":"string"},"label":{"description":"Make displays the item label to users in the scenario table header.","type":"string"},"description":{"description":"The description of the custom property structure item. You can review the item description in the **Scenario properties** tab in the Organization dashboard.","type":"string"},"type":{"description":"The data type of the custom property structure item. The data types `dropdown` and `multiselect` allow you to specify available options for the item data.","type":"string","enum":["boolean","number","shortText","longText","date","dropdown","multiselect"]},"options":{"description":"The options available to users when filling in the item data. For the data types `dropdown` and `multiselect`, fill in an object like `{\"options\":[{\"value\": \"Marketing\"}, {\"value\": \"Sales\"}]}`.\nYou can omit the `options` parameter for the rest of the data types. "},"required":{"description":"Set to `true` in order to make a structure item required when adding custom property data. Default value is `false`.","type":"boolean"}},"required":["name","label","type"]},"examples":{"basic-example":{"summary":"Text item","description":"Add a custom properties structure item with the data type `shortText`.","value":{"name":"teamLocation","label":"Team location","description":"Location of the team managing the scenario.","type":"shortText","required":true}},"options-example":{"summary":"Item with options","description":"Add a custom properties structure item with a set of available options. The data `type` has to be `dropdown` or `multiselect`. Use the `options` attribute to specify available options.","value":{"name":"category","label":"Category","description":"The scenario category","type":"multiselect","options":[{"value":"Eshop"},{"value":"Notifications"},{"value":"Routing"},{"value":"Products"}],"required":false}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"customPropertyStructureItem":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["boolean","number","shortText","longText","date","dropdown","multiselect"]},"required":{"type":"boolean"},"options":{"type":"array","nullable":true,"items":{"type":"object","properties":{"value":{"type":"string"}},"required":["value"]}}}},{"type":"object","properties":{"structureId":{"type":"integer"}}}]}}},"examples":{"basic-example":{"value":{"customPropertyStructureItem":{"id":183,"structureId":6,"name":"teamLocation","label":"Team location","description":"Location of the team managing the scenario.","type":"shortText","options":null,"required":false}}},"options-example":{"value":{"customPropertyStructureItem":{"id":185,"structureId":6,"name":"category","label":"Category","description":"The scenario category","type":"multiselect","options":[{"value":"Eshop"},{"value":"Notifications"},{"value":"Routing"},{"value":"Products"}],"required":false}}}}}}}}}},"/custom-property-structures/custom-property-structure-items/{customPropertyStructureItemId}":{"patch":{"tags":["Custom properties / Structure items"],"summary":"Update custom property structure item","description":"Updates the specified item of a custom property structure. Specify the attributes you want to update in the request body.\n\nYou cannot update the item `name` and `type`.\n\nYou can get the item ID with an API call to [list custom property structure items](./get--custom-property-structures--custompropertystructureid--custom-property-structure-items.md).\n\nWhen you want to update the `options` of a `multiselect` or `dropdown` item, specify all the options for the property. The new set of options replaces the current options.\n","security":[{"token":["custom-property-structures:write"]}],"parameters":[{"name":"customPropertyStructureItemId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the custom property structure item. Get the item ID with the API call to [list custom property structure items](/api-reference/custom-properties/structure-items/get--custom-properties--custompropertystructureid--custom-property-structure-items.md).","example":2}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"description":"Make displays the item label to users in the scenario table header.","type":"string"},"description":{"description":"The description of the custom property structure item. You can review the item description in the **Scenario properties** tab in the Organization dashboard.","type":"string"},"options":{"description":"The options available to users when filling in the item data. For the data types `dropdown` and `multiselect`, fill in an object like `{\"options\":[{\"value\": \"Marketing\"}, {\"value\": \"Sales\"}]}`.\nYou can omit the `options` parameter for the rest of the data types. "},"required":{"description":"Set to `true` if you require to fill in data to the structure item when adding custom property data. Default value is `false`.","type":"boolean"}}},"examples":{"update-label":{"summary":"Update custom property","description":"Updates the label of the custom property.","value":{"label":"Updated categories"}},"update-options":{"summary":"Update item options","description":"To update the custom property item options, specify the new set of available options. The new set of options replaces the previous options.","value":{"options":[{"value":"Logistics"},{"value":"People team"}]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"customPropertyStructureItem":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["boolean","number","shortText","longText","date","dropdown","multiselect"]},"required":{"type":"boolean"},"options":{"type":"array","nullable":true,"items":{"type":"object","properties":{"value":{"type":"string"}},"required":["value"]}}}},{"type":"object","properties":{"structureId":{"type":"integer"}}}]}}},"examples":{"update-label":{"value":{"customPropertyStructureItem":{"id":2,"structureId":11,"name":"categories","label":"Updated categories","description":"Update label of the categories.","type":"multiselect","options":[{"value":"Accounting"},{"value":"Development"}],"required":true}}},"update-options":{"value":{"customPropertyStructureItem":{"id":2,"structureId":11,"name":"categories","label":"Categories","description":"Update label of the categories.","type":"multiselect","options":[{"value":"Logistics"},{"value":"People team"}],"required":true}}}}}}}}},"delete":{"tags":["Custom properties / Structure items"],"summary":"Delete custom property structure item","description":"Deletes the specified custom property structure item. Use the `confirmed` parameter to confirm deleting the structure item.\nWhen you delete a custom property item, Make deletes the data filled in the item as well. Deleting custom property item data is irreversible.","security":[{"token":["custom-property-structures:write"]}],"parameters":[{"name":"customPropertyStructureItemId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the custom property structure item. Get the item ID with the API call to [list custom property structure items](/api-reference/custom-properties/structure-items/get--custom-properties--custompropertystructureid--custom-property-structure-items.md).","example":2},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"customPropertyStructureItem":{"type":"number"}}},"example":{"customPropertyStructureItem":2}}}}}}},"/data-stores":{"get":{"tags":["Data stores"],"summary":"List data stores","description":"Retrieves a collection of all data stores for a team with a given ID. Returned data stores are sorted by name in ascending order.","security":[{"token":["datastores:read"]}],"parameters":[{"required":true,"description":"The unique ID of the team whose data stores will be retrieved.","name":"teamId","in":"query","schema":{"type":"integer"},"example":1},{"examples":{"all-columns":{"summary":"Return all details","value":["id","name","teamId","records","size","maxSize","datastructureId"]},"id-name":{"summary":"Return ID and name","value":["id","name"]}},"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","records","size","maxSize","datastructureId"]}},"description":"Specifies the group of values to return. For example, you can retrieve only names and IDs of data stores for a team with a given ID."},{"name":"pg[sortBy]","in":"query","schema":{"type":"string","enum":["name"]},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The number of entities you want to skip before getting entities you want."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"The maximum number of entities you want to get in the response."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dataStores":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"integer"},"name":{"type":"string"},"records":{"type":"integer"},"size":{"type":"string"},"maxSize":{"type":"string"},"teamId":{"type":"integer"},"datastructureId":{"type":"integer"}}}},"pg":{"type":"object","properties":{"last":{"type":"string","description":"Shown only when using the `last` based pagination."},"showLast":{"type":"boolean","description":"Shown only when using the `last` based pagination."},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer","description":"Shown only when using the `offset` based pagination."}}}}},"examples":{"all-columns":{"summary":"Return all details","description":"Returns all data stores details","value":{"dataStores":[{"id":137,"name":"Customers","records":"0","size":"0","maxSize":"1048576","teamId":212,"datastructureId":123}],"pg":{"sortBy":"name","sortDir":"asc","offset":0,"limit":10}}},"id-name":{"summary":"Return ID and name","description":"Returns IDs and names of data stores","value":{"dataStores":[{"id":137,"name":"Customers"},{"id":256,"name":"Products"}],"pg":{"sortBy":"name","sortDir":"asc","offset":0,"limit":10}}}}}}}}},"post":{"tags":["Data stores"],"summary":"Create data store","description":"Creates a new data store with data passed in the request body. In the response, it returns all details of the created data store.","security":[{"token":["datastores:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The data store name. The name must be at most 128 characters long and does not need to be unique."},"teamId":{"type":"integer","description":"The unique ID of the team in which the data store will be created."},"datastructureId":{"type":"integer","description":"The unique ID of the data structure that will be included in the data store. All data structures IDs for a given team can be retrieved from the [List data structures](/api-reference/data-structures/get--data-structures.md) endpoint."},"maxSizeMB":{"type":"integer","description":"The maximum size of the data store (defined in MB)."}},"required":["name","teamId","datastructureId","maxSizeMB"]},"example":{"name":"Customers","teamId":212,"datastructureId":178,"maxSizeMB":1}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dataStore":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"integer"},"name":{"type":"string"},"records":{"type":"integer"},"size":{"type":"string"},"maxSize":{"type":"string"},"teamId":{"type":"integer"},"datastructureId":{"type":"integer"}}}}},"example":{"dataStore":{"id":137,"name":"Customers","records":"0","size":"0","maxSize":"1048576","teamId":212}}}}}}},"delete":{"tags":["Data stores"],"summary":"Delete data stores","description":"Deletes data stores with given IDs and returns their IDs in the response. This endpoint allows deleting one or more data stores at once.","security":[{"token":["datastores:write"]}],"parameters":[{"description":"Confirms the deletion if a data store is included in at least one scenario. Confirmation is required because the scenario will stop working without the data store. If the parameter is missing or it is set to `false` an error code is returned and the resource is not deleted.","name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true},{"description":"The unique ID of the team from which the data store will be deleted.","name":"teamId","in":"query","schema":{"type":"integer"},"example":1,"required":true}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"ids":{"type":"array","description":"The IDs of data stores to delete. You can either use only this parameter alone or use the `all` parameter, or the `all` parameter together with the `exceptIds` parameter.","items":{"type":"integer"}}},"required":["ids"]},{"type":"object","properties":{"exceptIds":{"type":"array","description":"The IDs of data stores to be excluded from deleting. It can be only used together with the `all` parameter set to `true`.","items":{"type":"integer"}},"all":{"type":"boolean","description":"If set to `true`, all data stores will be deleted. It can be used alone or together with the `exceptIds` parameter."}},"required":["all"]}]},"example":{"ids":[137,1399]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dataStores":{"type":"array","items":{"type":"integer"}}}},"example":{"dataStores":[137,1399]}}}}}}},"/data-stores/{dataStoreId}":{"get":{"tags":["Data stores"],"summary":"Get data store details","description":"Retrieves details of a data store with a given ID.","parameters":[{"name":"dataStoreId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the data store. Get the `dataStoreId` from the [List data stores](/api-reference/data-stores/get--data-stores.md) endpoint.","example":137},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","records","size","maxSize","datastructureId"]}},"description":"Specifies the group of values to return. For example, you can retrieve only names and IDs of data stores for a team with a given ID."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dataStore":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"integer"},"name":{"type":"string"},"records":{"type":"integer"},"size":{"type":"string"},"maxSize":{"type":"string"},"teamId":{"type":"integer"},"datastructureId":{"type":"integer"}}}}},"example":{"dataStore":{"id":137,"name":"Customers","records":"0","size":"0","maxSize":"1048576","teamId":212}}}}}}},"patch":{"tags":["Data stores"],"summary":"Update data store","description":"Updates properties of a data store with a given ID in a team with a given ID by passing new values in the request body. In the response, it returns all details of the updated data store including properties that were not changed. Any property that is not provided will be left unchanged. This endpoint cannot be used to update data included in the data store - for this use the [endpoints for managing data stores data](./data/get--data-stores--datastoreid--data.md).","security":[{"token":["datastores:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The data store name. The name must be at most 128 characters long and does not need to be unique."},"datastructureId":{"type":"integer","description":"The unique ID of the data structure included in the data store. All data structures IDs for a given team can be retrieved from the [List data structures](/api-reference/data-structures/get--data-structures.md) endpoint."},"maxSizeMB":{"type":"integer","description":"The maximum size of the data store (defined in MB)."}}},"example":{"name":"Data store 2","datastructureId":9,"maxSizeMB":3}}}},"parameters":[{"name":"dataStoreId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the data store. Get the `dataStoreId` from the [List data stores](/api-reference/data-stores/get--data-stores.md) endpoint.","example":137}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dataStore":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"integer"},"name":{"type":"string"},"records":{"type":"integer"},"size":{"type":"string"},"maxSize":{"type":"string"},"teamId":{"type":"integer"},"datastructureId":{"type":"integer"}}}}},"example":{"dataStore":{"id":137,"name":"Customers","records":"0","size":"0","maxSize":"1048576","teamId":212}}}}}}}},"/data-stores/{dataStoreId}/data":{"get":{"tags":["Data stores / Data"],"summary":"List data store records","description":"Retrieves a collection of all records from a data store with a given ID. Each returned record consists of the `key` (custom or automatically generated) and `data`.","security":[{"token":["datastores:read"]}],"parameters":[{"name":"dataStoreId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the data store. Get the `dataStoreId` from the [List data stores](/api-reference/data-stores/get--data-stores.md) endpoint.","example":137},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"The maximum number of entities you want to get in the response."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The number of entities you want to skip before getting entities you want."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"records":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The unique key of the data store record. If no key is provided, it will be automatically generated."},"data":{"type":"object","description":"The data of the data store record. The structure strictly depends on the included data structure. If no data is provided, in response the values will be set to null."}}}},"spec":{"type":"array","items":{"type":"object"}},"strict":{"type":"boolean"},"count":{"type":"integer"},"pg":{"type":"object","properties":{"last":{"type":"string","description":"Shown only when using the `last` based pagination."},"showLast":{"type":"boolean","description":"Shown only when using the `last` based pagination."},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer","description":"Shown only when using the `offset` based pagination."}}}}},"example":{"records":[{"key":"8f7162828bc0","data":{"price":600}}],"spec":[{"name":"price","label":"Price","type":"number","default":null,"required":true}],"strict":false,"count":2,"pg":{"limit":10,"offset":0}}}}}}},"post":{"tags":["Data stores / Data"],"summary":"Create data store record","description":"Creates a new record in a data store with a given ID and returns all record details.","security":[{"token":["datastores:write"]}],"parameters":[{"name":"dataStoreId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the data store. Get the `dataStoreId` from the [List data stores](/api-reference/data-stores/get--data-stores.md) endpoint.","example":137}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"The unique key of the data store record. If no key is provided, it will be automatically generated."},"data":{"type":"object","description":"The data of the data store record. The structure strictly depends on the included data structure. If no data is provided, in response the values will be set to null."}}},"example":{"key":"8f7162828bc0","data":{"price":600}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"The unique key of the data store record. If no key is provided, it will be automatically generated."},"data":{"type":"object","description":"The data of the data store record. The structure strictly depends on the included data structure. If no data is provided, in response the values will be set to null."}}},"example":{"key":"8f7162828bc0","data":{"price":600}}}}}}},"delete":{"tags":["Data stores / Data"],"summary":"Delete data store records","description":"Deletes records from the specified data store.\n\nSpecify the `keys` of the records you want to delete in the `keys` array in the request body.\n\nUse the `all` parameter in the request body to delete all records from the data store. You have to add the `confirmed` parameter in the API call query to confirm deleting the data, otherwise you get an error.\n\nWhen you are deleting all records, you can use the `exceptKeys` parameter to specify keys of the records which you want to keep.\n\nThe response contains keys of the deleted records.","security":[{"token":["datastores:write"]}],"parameters":[{"name":"dataStoreId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the data store. Get the `dataStoreId` from the [List data stores](/api-reference/data-stores/get--data-stores.md) endpoint.","example":137},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true,"description":"Set to `true` to confirm deleting of the data store records. Otherwise, you get an error and Make won't delete the data store records.","examples":{"delete-all":{"value":true}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","description":"The keys of data store records you want to delete. Use the `all` and `confirmed` parameters if you want to delete all records in the data store.","items":{"type":"string"}},"all":{"type":"boolean","description":"Set to `true` to delete all records in the data store. Use the `confirmed` parameter to confirm the deletion. You can also use the `exceptKeys` parameter to specify keys of the records that you want to keep in the data store."},"exceptKeys":{"type":"array","description":"Specify the keys of the data store records you want to keep when deleting all records from the data store.","items":{"type":"string"}}}},"examples":{"delete-selected":{"summary":"Delete records","description":"Delete records in the data store. Specify the record keys in the `keys` array in the request body.","value":{"keys":["1abd2defk","568tyuj45"]}},"delete-all":{"summary":"Delete all records","description":"Deletes all records in the data store. You have to confirm the deletion with the `confirmed` parameter. You can use the `exceptKeys` parameter to specify keys of the records you want to keep.","value":{"all":true,"exceptKeys":["568tyuj45"]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"}}}},"examples":{"delete-selected":{"value":{"keys":["1abd2defk","568tyuj45"]}},"delete-all":{"value":{"keys":["1abd2defk"]}}}}}}}}},"/data-stores/{dataStoreId}/data/{dataStoreKeyRecord}":{"put":{"tags":["Data stores / Data"],"summary":"Update entire data store record","description":"Updates a data store record with a given key by passing new data in the request body. It replaces the entire resource with the new values. In the response, this endpoint returns all details of the updated data.","security":[{"token":["datastores:write"]}],"parameters":[{"name":"dataStoreId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the data store. Get the `dataStoreId` from the [List data stores](/api-reference/data-stores/get--data-stores.md) endpoint.","example":137},{"name":"dataStoreKeyRecord","in":"path","schema":{"type":"string"},"required":true,"description":"The key of the data store record. It can be retrieved from the [List data store records](/api-reference/data-stores/data/get--data-stores--datastoreid--data.md) endpoint.","example":"ecc4819b2260"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"The data is different for each data store so there are no predefined body properties to use. Please see the request example for more details."},"example":{"price":600}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"The unique key of the data store record. If no key is provided, it will be automatically generated."},"data":{"type":"object","description":"The data of the data store record. The structure strictly depends on the included data structure. If no data is provided, in response the values will be set to null."}}},"example":{"key":"8f7162828bc0","data":{"price":600}}}}}}},"patch":{"tags":["Data stores / Data"],"summary":"Update data store record details","description":"Updates a data store record with a given key by passing new data in the request body. Any property that is not provided will be left unchanged. In the response, it returns all details of the updated data including properties that were not changed.","security":[{"token":["datastores:write"]}],"parameters":[{"name":"dataStoreId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the data store. Get the `dataStoreId` from the [List data stores](/api-reference/data-stores/get--data-stores.md) endpoint.","example":137},{"name":"dataStoreKeyRecord","in":"path","schema":{"type":"string"},"required":true,"description":"The key of the data store record. It can be retrieved from the [List data store records](/api-reference/data-stores/data/get--data-stores--datastoreid--data.md) endpoint.","example":"ecc4819b2260"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"The data is different for each data store so there are no predefined body properties to use. Please see the request example for more details."},"example":{"price":600}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"The unique key of the data store record. If no key is provided, it will be automatically generated."},"data":{"type":"object","description":"The data of the data store record. The structure strictly depends on the included data structure. If no data is provided, in response the values will be set to null."}}},"example":{"key":"8f7162828bc0","data":{"price":600}}}}}}}},"/data-structures":{"get":{"tags":["Data structures"],"summary":"List data structures","description":"Retrieves a collection of all data structures for a team with a given ID. Returned data structures are sorted by name in ascending order.","security":[{"token":["udts:read"]}],"parameters":[{"name":"teamId","in":"query","schema":{"type":"integer"},"required":true,"description":"The unique ID of the team whose data structures will be retrieved.","example":123},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","spec","strict"]}},"description":"Specifies the group of values to return. For example, you can retrieve only names of data structures for a team with a given ID."},{"name":"pg[sortBy]","in":"query","schema":{"type":"string","enum":["name"]},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dataStructures":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"teamId":{"type":"integer"},"name":{"type":"string","minLength":1,"maxLength":128},"strict":{"type":"boolean"},"spec":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"string"},"multiline":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"number"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["date"]},"name":{"type":"string"},"label":{"type":"string"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["buffer"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"codepage":{"type":"string","enum":["binary","utf8"]}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["collection"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"array","items":{"type":"object"}},"sequence":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["array"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"object"},"sequence":{"type":"boolean"}},"required":["name","type"]}]}}},"required":["id","teamId","name","strict","spec"]}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"examples":{"default":{"summary":"Empty data structure","description":"Returns data structures with empty specification","value":{"dataStructures":[{"id":9,"name":"Data structure 1","teamId":1},{"id":1,"name":"Data structure 2","teamId":1}],"pg":{"sortBy":"name","sortDir":"asc","limit":10000,"offset":0}}},"all":{"summary":"Data structure with spec","description":"Returns data structure with full specification","value":{"dataStructures":[{"id":9,"name":"Data structure 1","teamId":1,"spec":[{"type":"text","name":"txt","label":"Text field","default":"default string","required":true},{"type":"number","name":"num","label":"Number field","default":"1,","required":false}],"strict":true},{"id":1,"name":"Data structure 2","teamId":1,"spec":[{"type":"string","format":"date","name":"dt","label":"Date field"}],"strict":false}],"pg":{"sortBy":"name","sortDir":"asc","limit":10000,"offset":0}}}}}}}}},"post":{"tags":["Data structures"],"summary":"Create data structure","description":"Creates a new data structure with data passed in the request body. In the response, it returns all details of the created data structure including its full specification.","security":[{"token":["udts:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"type":"integer","description":"The unique ID of the team in which the data structure will be created."},"name":{"type":"string","description":"The name of the data structure. The maximum length of the name is 128 characters.","minLength":1,"maxLength":128},"strict":{"type":"boolean","description":"Set to `true` to enforce strict validation of the data put in the data structure. With the strict validation enabled, the data structure won't store data that don't fit into the structure and the storing module will return an error.\n\nThe default value of this parameter is `false`. With the default setting, the modules using the data structure will process data that don't conform to the data structure.\n","example":true},"spec":{"type":"array","description":"Sets the data structure specification.","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"string"},"multiline":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"number"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["date"]},"name":{"type":"string"},"label":{"type":"string"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["buffer"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"codepage":{"type":"string","enum":["binary","utf8"]}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["collection"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"array","items":{"type":"object"}},"sequence":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["array"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"object"},"sequence":{"type":"boolean"}},"required":["name","type"]}]}}},"required":["teamId","name","strict","spec"]},"example":{"teamId":1,"name":"Data structure 1","strict":true,"spec":[{"type":"text","name":"txt","label":"Text field","default":"default string","required":true},{"type":"number","name":"num","label":"Number field","default":"1,","required":false}]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dataStructure":{"type":"object","properties":{"id":{"type":"integer"},"teamId":{"type":"integer"},"name":{"type":"string","minLength":1,"maxLength":128},"strict":{"type":"boolean"},"spec":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"string"},"multiline":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"number"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["date"]},"name":{"type":"string"},"label":{"type":"string"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["buffer"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"codepage":{"type":"string","enum":["binary","utf8"]}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["collection"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"array","items":{"type":"object"}},"sequence":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["array"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"object"},"sequence":{"type":"boolean"}},"required":["name","type"]}]}}},"required":["id","teamId","name","strict","spec"]}}},"example":{"dataStructure":{"id":9,"name":"Data structure 1","teamId":1,"spec":[{"type":"text","name":"txt","label":"Text field","default":"default string","required":true},{"type":"number","name":"num","label":"Number field","default":"1,","required":false}],"strict":true}}}}}}}},"/data-structures/{dataStructureId}":{"get":{"tags":["Data structures"],"summary":"Get data structure","description":"Retrieves a data structure with a given ID","security":[{"token":["udts:read"]}],"parameters":[{"name":"dataStructureId","in":"path","schema":{"type":"integer"},"required":true,"description":"The data structure ID. Get the `dataStructureId` with the [list data structures](/api-reference/data-structures/get--data-structures.md) endpoint.","example":1459},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","spec","strict"]}},"description":"Specifies the group of values to return. For example, you can retrieve only name of a data structure."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dataStructure":{"type":"object","properties":{"id":{"type":"integer"},"teamId":{"type":"integer"},"name":{"type":"string","minLength":1,"maxLength":128},"strict":{"type":"boolean"},"spec":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"string"},"multiline":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"number"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["date"]},"name":{"type":"string"},"label":{"type":"string"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["buffer"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"codepage":{"type":"string","enum":["binary","utf8"]}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["collection"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"array","items":{"type":"object"}},"sequence":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["array"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"object"},"sequence":{"type":"boolean"}},"required":["name","type"]}]}}},"required":["id","teamId","name","strict","spec"]}}},"example":{"dataStructure":{"id":9,"name":"Data structure 1","teamId":1,"spec":[{"type":"text","name":"txt","label":"Text field","default":"default string","required":true},{"type":"number","name":"num","label":"Number field","default":"2,","required":false}],"strict":true}}}}}}},"patch":{"tags":["Data structures"],"summary":"Update data structure","description":"Updates the specified data structure. Make updates only parameters you send in the request body.\nNote that when you update the data structure specification with the `spec` parameter, you have to provide all structure fields you want to use. Make replaces the old structure specification with the new one.\nThe response contains all details about the updated data structure.","security":[{"token":["udts:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the data structure. The maximum length of the name is 128 characters.","minLength":1,"maxLength":128},"strict":{"type":"boolean","description":"Set to `true` to enforce strict validation of the data put in the data structure. With the strict validation enabled, the data structure won't store data that don't fit into the structure and the storing module will return an error.\n\nThe default value of this parameter is `false`. With the default setting, the modules using the data structure will process data that don't conform to the data structure.\n","example":false},"spec":{"type":"array","description":"Sets the data structure specification.\n \nNote that when you update the data structure specification with the `spec` parameter, you have to provide all structure fields you want to use. Make replaces the old structure specification with the new one.\"\n","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"string"},"multiline":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"number"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["date"]},"name":{"type":"string"},"label":{"type":"string"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["buffer"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"codepage":{"type":"string","enum":["binary","utf8"]}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["collection"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"array","items":{"type":"object"}},"sequence":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["array"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"object"},"sequence":{"type":"boolean"}},"required":["name","type"]}]}}}},"example":{"name":"Data structure 1","spec":[{"type":"text","name":"txt","label":"Text field","default":"default string","required":true},{"type":"number","name":"num","label":"Number field","default":"2,","required":false}]}}}},"parameters":[{"name":"dataStructureId","in":"path","schema":{"type":"integer"},"required":true,"description":"The data structure ID. Get the `dataStructureId` with the [list data structures](/api-reference/data-structures/get--data-structures.md) endpoint.","example":1459}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dataStructure":{"type":"object","properties":{"id":{"type":"integer"},"teamId":{"type":"integer"},"name":{"type":"string","minLength":1,"maxLength":128},"strict":{"type":"boolean"},"spec":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"string"},"multiline":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"number"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["date"]},"name":{"type":"string"},"label":{"type":"string"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["buffer"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"codepage":{"type":"string","enum":["binary","utf8"]}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["collection"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"array","items":{"type":"object"}},"sequence":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["array"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"object"},"sequence":{"type":"boolean"}},"required":["name","type"]}]}}},"required":["id","teamId","name","strict","spec"]}}},"example":{"dataStructure":{"id":9,"name":"Data structure 1","teamId":1,"spec":[{"type":"text","name":"txt","label":"Text field","default":"default string","required":true},{"type":"number","name":"num","label":"Number field","default":"2,","required":false}],"strict":true}}}}}}},"delete":{"tags":["Data structures"],"summary":"Delete data structure","description":"Deletes a data structure with a given ID and returns the ID in the response.","security":[{"token":["udts:write"]}],"parameters":[{"name":"dataStructureId","in":"path","schema":{"type":"integer"},"required":true,"description":"The data structure ID. Get the `dataStructureId` with the [list data structures](/api-reference/data-structures/get--data-structures.md) endpoint.","example":1459},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"description":"Confirms the deletion if a data structure is included in at least one scenario. Confirmation is required because the scenario will stop working without the data structure. If the parameter is missing or it is set to `false` an error code is returned and the resource is not deleted.","example":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dataStructure":{"type":"integer"}}},"example":{"dataStructure":1}}}}}}},"/data-structures/{dataStructureId}/clone":{"post":{"tags":["Data structures"],"summary":"Clone data structure","description":"Clones the specified data structure. Use the `targetTeamId` to clone the data structure to the specified team.\n\nThe response contains all details of the data structure clone with data structure full specification.","security":[{"token":["udts:write"]}],"parameters":[{"name":"dataStructureId","in":"path","schema":{"type":"integer"},"required":true,"description":"The data structure ID. Get the `dataStructureId` with the [list data structures](/api-reference/data-structures/get--data-structures.md) endpoint.","example":1459}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the data structure clone. The maximum length of the name is 128 characters.","minLength":1,"maxLength":128},"targetTeamId":{"type":"integer","description":"The ID of the team that should use the data structure clone. If you don't specify the `targetTeamId` Make clones the data structure in the original team."}},"required":["name"]},"example":{"name":"Cloned data structure","targetTeamId":22}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dataStructure":{"type":"object","properties":{"id":{"type":"integer"},"teamId":{"type":"integer"},"name":{"type":"string","minLength":1,"maxLength":128},"strict":{"type":"boolean"},"spec":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"string"},"multiline":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"default":{"type":"number"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["date"]},"name":{"type":"string"},"label":{"type":"string"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["buffer"]},"name":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"codepage":{"type":"string","enum":["binary","utf8"]}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["collection"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"array","items":{"type":"object"}},"sequence":{"type":"boolean"}},"required":["name","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["array"]},"name":{"type":"string"},"label":{"type":"string"},"spec":{"type":"object"},"sequence":{"type":"boolean"}},"required":["name","type"]}]}}},"required":["id","teamId","name","strict","spec"]},"differentTeam":{"type":"boolean"}}},"example":{"dataStructure":{"id":2547,"name":"Cloned data structure","teamId":22,"spec":[{"type":"text","name":"txt","label":"Text field","default":"default string","required":true},{"type":"number","name":"num","label":"Number field","default":"1,","required":false}],"strict":true}}}}}}}},"/devices":{"get":{"tags":["Devices"],"summary":"List","description":"Get a list of devices of a given team.","security":[{"token":["devices:read"]}],"parameters":[{"name":"teamId","in":"query","schema":{"type":"integer"},"required":true,"example":"1"},{"name":"assigned","in":"query","schema":{"type":"boolean"},"description":"true = devices with scenarioId; false = devices without scenarioId - this filter only affects the trigger scope","example":"true"},{"name":"viewForScenarioId","in":"query","schema":{"type":"integer"},"description":"Devices assigned to the scenario and not assigned devices. If this parameter is set assigned parameter is ignored.","example":"4"},{"name":"scope[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["call","scanner"]}},"example":"call"},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","udid","scope","info","queueCount","queueLimit","scenarioId"]}},"example":"name"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"devices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"udid":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"info":{"type":"object"},"queueCount":{"type":"integer"},"queueLimit":{"type":"integer"},"scenarioId":{"type":"integer"}}}}}},"example":{"devices":[{"id":2,"name":"Phone","teamId":2,"udid":"XboVPMTfgtwBNjRr7AGPe9X4AdRZhkaF","scope":["call","scaner"],"info":null,"queueCount":0,"queueLimit":10000,"scenarioId":null}]}}}}}}},"/devices/{deviceId}":{"get":{"tags":["Devices"],"summary":"Detail","description":"The ID can be id or udid.","security":[{"token":["devices:read"]}],"parameters":[{"name":"deviceId","in":"path","schema":{"type":"integer"},"required":true},{"name":"inspector","in":"query","schema":{"type":"integer"},"example":"1"},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","udid","scope","info","queueCount","queueLimit","scenarioId"]}},"example":"name"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"device":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"udid":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"info":{"type":"object"},"queueCount":{"type":"integer"},"queueLimit":{"type":"integer"},"scenarioId":{"type":"integer"}}}}},"example":{"device":{"id":2,"name":"Phone","teamId":2,"udid":"XboVPMTfgtwBNjRr7AGPe9X4AdRZhkaF","scope":["call","scaner"],"info":null,"queueCount":0,"queueLimit":10000,"scenarioId":null}}}}}}},"patch":{"tags":["Devices"],"summary":"Partial update","description":"Update a device","security":[{"token":["devices:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Android phone"}}}},"parameters":[{"name":"deviceId","in":"path","schema":{"type":"string"},"required":true},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","udid","scope","info","queueCount","queueLimit","scenarioId"]}},"example":"name"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"device":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"udid":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"info":{"type":"object"},"queueCount":{"type":"integer"},"queueLimit":{"type":"integer"},"scenarioId":{"type":"integer"}}}}},"example":{"device":{"id":2,"name":"Android phone","teamId":2,"udid":"XboVPMTfgtwBNjRr7AGPe9X4AdRZhkaF","scope":["call","scaner"],"info":null,"queueCount":0,"queueLimit":10000,"scenarioId":null}}}}}}},"delete":{"tags":["Devices"],"summary":"Delete","description":"Errors:<br />\r\nIM004 - Confirmation required (error with metadata) - needs confirmation<br />\r\nIM405 - Device can't be deleted because it contains messages in queue (error with metadata) - needs confirmation<br />\r\nIM005 - Device is locked by a running scenario and thus can't be deleted","security":[{"token":["devices:write"]}],"parameters":[{"name":"deviceId","in":"path","schema":{"type":"string"},"required":true,"example":2},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":"true"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"device":{"type":"integer"}}},"example":{"device":2}}}}}}},"/devices/request":{"post":{"tags":["Devices"],"summary":"Create request","description":"Required scope: devices:write","security":[{"token":["devices:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"teamId":{"type":"integer"}}},"example":{"name":"Phone","teamId":1}}}},"parameters":[{"name":"inspector","in":"query","schema":{"type":"integer"},"example":"1"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"createDeviceRequest":{"type":"object","properties":{"udid":{"type":"string"},"inspector":{"type":"boolean"}}}}},"example":{"createDeviceRequest":{"udid":"k1KqeAVIYA5Rq5vduiU3mUfbGD4vhTfH","inspector":true}}}}}}}},"/devices/{deviceId}/incomings":{"get":{"tags":["Devices / Incomings"],"summary":"List","description":"Required scope: devices:read","security":[{"token":["devices:read"]}],"parameters":[{"name":"deviceId","in":"path","schema":{"type":"string"},"required":true},{"name":"scope","in":"query","schema":{"type":"string"},"example":"new_sms"},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"incomings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"scope":{"type":"string"},"size":{"type":"integer"},"created":{"type":"string","format":"date-time"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"example":{"incomings":[{"id":"27c4879e5fae4d78b0d371f59187fa93","scope":"new_sms","size":1,"created":"2021-01-26T06:55:58.803Z"}],"pg":{"sortBy":"created","limit":10000,"sortDir":"asc","offset":0}}}}}}},"delete":{"tags":["Devices / Incomings"],"summary":"Delete","description":"\"ids\" and \"all\" can no be used together<br />\r\n\"ids\" or \"all\" has to be set<br />\r\n\"exceptIds\" is possible to use only with \"all\"<br />\r\nIt could happen, that some incoming messages are deleted and others not. In this case, the API returns a successful status code, and the response additionally contains an error object with a error description.","security":[{"token":["devices:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"}},"exceptIds":{"type":"array","items":{"type":"string"}},"all":{"type":"boolean"}}},"example":{"ids":[],"exceptIds":[],"all":true}}}},"parameters":[{"name":"deviceId","in":"path","schema":{"type":"string"},"required":true},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":"true"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"incomings":{"type":"array","items":{"type":"string"}},"error":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"}}}}},"examples":{"delete":{"summary":"Delete","value":{"incomings":["4ff11b6d24e24fa9add17d11a8143578","167193ab06d34b879346c69aebc8f5c1","d1efa5318a034d36ad7cbeac543573cf","29d9a7410dff494ab739036f6c332335"]}},"delete-with-error":{"summary":"Delete with error","value":{"incomings":["02731358e5ab4022aff040015a1f1a57","dcf18b685e5c4095b9ee24cea09146d3"],"error":{"name":"APIError","message":"Some of the incoming messages could not be deleted because they are being processed right now."}}}}}}}}}},"/devices/{deviceId}/incomings/{incomingId}":{"get":{"tags":["Devices / Incomings"],"summary":"Detail","description":"Required scope: devices:read","security":[{"token":["devices:read"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"scope":{"type":"string"},"size":{"type":"integer"},"created":{"type":"string","format":"date-time"},"data":{"type":"string"}}},"examples":{"detail":{"value":{"id":5,"scope":"text","size":5,"created":"2004-10-19 10:23:54+02","data":"text"}}}}}}},"parameters":[{"name":"deviceId","in":"path","schema":{"type":"string"},"required":true},{"name":"incomingId","in":"path","schema":{"type":"string"},"required":true}]}},"/devices/{deviceId}/incomings/stats":{"get":{"tags":["Devices / Incomings"],"summary":"Stats","description":"Required scope: devices:read","security":[{"token":["devices:read"]}],"parameters":[{"name":"deviceId","in":"path","schema":{"type":"string"},"required":true},{"name":"scope","in":"query","schema":{"type":"string"},"example":"new_sms"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"incomingStat":{"type":"object","properties":{"queue":{"type":"integer"},"limit":{"type":"integer"},"enabled":{"type":"boolean"}}}}},"example":{"incomingStat":{"queue":1,"limit":10000,"enabled":true}}}}}}}},"/devices/{deviceId}/outgoings":{"get":{"tags":["Devices / Outgoing"],"summary":"List","description":"Required scope: devices:read","security":[{"token":["devices:read"]}],"parameters":[{"name":"deviceId","in":"path","schema":{"type":"string"},"required":true},{"name":"scope","in":"query","schema":{"type":"string"},"example":"new_sms"},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"outgoings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"scope":{"type":"string"},"size":{"type":"integer"},"created":{"type":"string","format":"date-time"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"example":{"outgoings":[{"id":"ce2ab2eca9874a8b874f5deb6e22d475","scope":"new_sms","size":1,"created":"2021-01-12T15:08:36.732Z"}],"pg":{"sortBy":"created","limit":10000,"sortDir":"asc","offset":0}}}}}}},"delete":{"tags":["Devices / Outgoing"],"summary":"Delete","description":"\"ids\" and \"all\" can no be used together<br />\r\n\"ids\" or \"all\" has to be set<br />\r\n\"exceptIds\" is possible to use only with \"all\"<br />\r\nIt could happen, that some incoming messages are deleted and others not. In this case, the API returns a successful status code, and the response additionally contains an error object with a error description.","security":[{"token":["devices:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"}},"exceptIds":{"type":"array","items":{"type":"string"}},"all":{"type":"boolean"}}},"example":{"ids":[],"exceptIds":[],"all":true}}}},"parameters":[{"name":"deviceId","in":"path","schema":{"type":"string"},"required":true},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":"true"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"outgoings":{"type":"array","items":{"type":"string"}},"error":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"}}}}},"examples":{"delete":{"summary":"Delete","value":{"outgoings":["4ff11b6d24e24fa9add17d11a8143578","167193ab06d34b879346c69aebc8f5c1","d1efa5318a034d36ad7cbeac543573cf","29d9a7410dff494ab739036f6c332335"]}},"delete-with-error":{"summary":"Delete with error","value":{"outgoings":["02731358e5ab4022aff040015a1f1a57","dcf18b685e5c4095b9ee24cea09146d3"],"error":{"name":"APIError","message":"Some of the outgoings messages could not be deleted because they are being processed right now."}}}}}}}}}},"/devices/{deviceId}/outgoings/{outgoingId}":{"get":{"tags":["Devices / Outgoing"],"summary":"Detail","description":"Required scope: devices:read","security":[{"token":["devices:read"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"scope":{"type":"string"},"size":{"type":"integer"},"created":{"type":"string","format":"date-time"},"data":{"type":"string"}}},"examples":{"detail":{"value":{"id":5,"scope":"text","size":5,"created":"2004-10-19 10:23:54+02","data":"text"}}}}}}},"parameters":[{"name":"deviceId","in":"path","schema":{"type":"string"},"required":true},{"name":"outgoingId","in":"path","schema":{"type":"string"},"required":true}]}},"/dlqs":{"get":{"tags":["Incomplete executions"],"summary":"List scenario incomplete executions","description":"Retrieves the list of incomplete executions of the specified scenario. Supports optional server-side filters — combine any of them to narrow down the results.","security":[{"token":["dlqs:read"]}],"parameters":[{"name":"scenarioId","in":"query","schema":{"type":"integer"},"required":true,"example":4,"description":"The ID value of the scenario. Use the API call `GET /scenarios` to get the ID of the scenario. If your scenario is placed in a folder, use the API call `GET /scenarios-folders?teamId={teamId}` first."},{"name":"idSearch","in":"query","schema":{"type":"string"},"example":"ada87173334b44d1907270064edbd7dd","description":"Filters the incomplete executions by a substring of their ID value (case-insensitive)."},{"name":"createdFrom","in":"query","schema":{"type":"integer"},"example":1572864000000,"description":"Filters the incomplete executions created on or after this Unix timestamp (in milliseconds)."},{"name":"createdTo","in":"query","schema":{"type":"integer"},"example":1572950400000,"description":"Filters the incomplete executions created on or before this Unix timestamp (in milliseconds)."},{"name":"sizeFrom","in":"query","schema":{"type":"integer","minimum":0},"example":0,"description":"Filters the incomplete executions with a payload size (in bytes) greater than or equal to this value."},{"name":"sizeTo","in":"query","schema":{"type":"integer","minimum":0},"example":10240,"description":"Filters the incomplete executions with a payload size (in bytes) less than or equal to this value."},{"name":"status","in":"query","schema":{"type":"string","enum":["resolved","scheduled","inprogress","unresolved"]},"example":"unresolved","description":"Filters the incomplete executions by their derived status: `resolved` (already retried successfully), `scheduled` (will be automatically retried in the future), `inprogress` (currently being retried), or `unresolved` (none of the above)."},{"name":"scheduledInFrom","in":"query","schema":{"type":"integer"},"example":1572864000000,"description":"Filters the incomplete executions with the next automatic retry scheduled on or after this Unix timestamp (in milliseconds)."},{"name":"scheduledInTo","in":"query","schema":{"type":"integer"},"example":1572950400000,"description":"Filters the incomplete executions with the next automatic retry scheduled on or before this Unix timestamp (in milliseconds)."},{"name":"attemptsFrom","in":"query","schema":{"type":"integer","minimum":0,"maximum":32767},"example":0,"description":"Filters the incomplete executions with a number of retry attempts greater than or equal to this value."},{"name":"attemptsTo","in":"query","schema":{"type":"integer","minimum":0,"maximum":32767},"example":5,"description":"Filters the incomplete executions with a number of retry attempts less than or equal to this value."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dlqs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"reason":{"type":"string"},"created":{"type":"string","format":"date-time"},"size":{"type":"integer"},"resolved":{"type":"boolean"},"retry":{"type":"boolean"},"attempts":{"type":"integer"}}}}}},"example":{"dlqs":[{"id":"ada87173334b44d1907270064edbd7dd","reason":"IP address is not valid.","created":"2019-11-04T10:52:57.260Z","size":5,"resolved":false,"retry":true,"attempts":1},{"id":"c29c4bf027c74bfc848e1803bf764447","reason":"IP address is not valid.","created":"2019-11-04T10:52:12.276Z","size":5,"resolved":false,"retry":true,"attempts":0}]}}}}}},"delete":{"tags":["Incomplete executions"],"summary":"Delete scenario incomplete executions","description":"Deletes incomplete executions of the specified scenario. Specify the incomplete execution ID values in the `ids` array in the request body to delete the specified incomplete executions.\n\nYou can set the `\"all\": true` pair to delete all incomplete executions of the specified scenario. If you use the `\"all\": true` parameter, you have to specify the `confirmed=true` query parameter to confirm the deletion. Otherwise, the API call returns the error IM004 (406).\n\nAdd the `exceptIds` array to the request body to specify items you don't want to delete.\n\nYou get an error if you try to delete incomplete executions which are being processed. The rest of the specified items is still deleted.","security":[{"token":["dlqs:write"]}],"parameters":[{"name":"scenarioId","in":"query","schema":{"type":"integer"},"example":4,"required":true,"description":"The ID value of the scenario. Use the API call `GET /scenarios` to get the ID of the scenario. If your scenario is placed in a folder, use the API call `GET /scenarios-folders?teamId={teamId}` first."},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":"true","description":"Set to `true` to confirm deleting the incomplete executions. Otherwise the API call fails with the error IM004 (406)."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"description":"The ID values of the scenario incomplete executions that you want to delete. Use the API call `GET /dlqs/?scenarioId={scenarioId}` to get the ID values of the webhook processing queue items."},"exceptIds":{"type":"array","items":{"type":"string"},"description":"If you are deleting all of the incomplete executions with the `all:true` parameter, you can specify the ID values of the incomplete executions that you want to keep. Use the API call `GET /dlqs?scenarioId={scenarioId}` to get the ID values of the incomplete executions."},"all":{"type":"boolean","description":"Set to `true` to delete all incomplete executions of the specified scenario."}}},"examples":{"delete":{"summary":"Delete incomplete executions","description":"Delete incomplete executions of the specified scenario.","value":{"ids":["85354fed3c804ec3a137b9ceb9dc9256","3b8badf2afd7447eb4340c24d1706b83"],"exceptIds":[],"all":false}},"delete-with-error":{"summary":"Delete error","description":"You get the API error if you try to delete incomplete executions that are being processed at the moment. The items that are not being processed will be deleted.","value":{"ids":["2f2eb8de489a4e059518b212f5388bf3"]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dlqs":{"type":"array","items":{"type":"string"}}}},"examples":{"delete":{"value":{"dlqs":["f140d39b5c9c4c72b3bc4f3b7aa467de","74232267212a431ebab728158575ef65"]}},"delete-with-error":{"value":{"dlqs":["2f2eb8de489a4e059518b212f5388bf3"],"error":{"name":"APIError","message":"Some of the executions could not be deleted because they are being processed right now.","stack":"APIError: Some of the executions could not be deleted because they are being processed right now.\n  at deleteDlqMulti (C:\\make-repo\\imt-web-api\\lib\\controllers\\dlqs.js:162:16)\n  at processTicksAndRejections (internal/process/task_queues.js:93:5)"}}}}}}}}}},"/dlqs/{dlqId}":{"get":{"tags":["Incomplete executions"],"summary":"Incomplete execution detail","description":"Gets detail of the specified incomplete execution.","security":[{"token":["dlqs:read"]}],"parameters":[{"name":"dlqId","in":"path","schema":{"type":"string"},"required":true,"example":"a07e16f2ad134bf49cf83a00aa95c0a5","description":"The ID of the incomplete execution. Get the ID values of the incomplete executions of a scenario with the API call `GET /dlqs?scenarioId={scenarioId}`."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dlq":{"type":"object","properties":{"id":{"type":"string"},"scenarioId":{"type":"integer"},"scenarioName":{"type":"string"},"companyId":{"type":"integer"},"companyName":{"type":"string"},"resolved":{"type":"boolean"},"deleted":{"type":"boolean"},"index":{"type":"integer"},"created":{"type":"string","format":"date-time"},"executionId":{"type":"string"},"retry":{"type":"boolean"},"attempts":{"type":"integer"},"size":{"type":"integer"}}}}},"example":{"dlq":{"id":"a07e16f2ad134bf49cf83a00aa95c0a5","scenarioId":3,"scenarioName":"DLQS test","companyId":1,"companyName":"My Lab","resolved":false,"deleted":false,"index":49,"created":"2019-11-26T09:57:10.039Z","executionId":"55602700-e840-45bf-b18c-0aef214dd967","retry":false,"attempts":2,"size":21}}}}}}},"patch":{"tags":["Incomplete executions"],"summary":"Update incomplete execution","description":"Updates the specified incomplete execution.","security":[{"token":["dlqs:write"]}],"parameters":[{"name":"dlqId","in":"path","schema":{"type":"string"},"required":true,"description":"The ID of the incomplete execution. Get the ID values of the incomplete executions of a scenario with the API call `GET /dlqs?scenarioId={scenarioId}`.","example":"a07e16f2ad134bf49cf83a00aa95c0a5"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"blueprint":{"type":"string","description":"The blueprint you want to use to resolve the incomplete execution. If you download the blueprint from a Make scenario as a JSON object, you have to escape the blueprint contents to be able to send it as a string."},"failer":{"type":"integer","description":"The module ID which caused the incomplete execution of the scenario."}}},"example":{"blueprint":"{\"name\":\"Integration of failing scenario\",\"flow\":[{\"id\":1,\"module\":\"http:ActionSendData\",\"version\":3,\"parameters\":{\"handleErrors\":false},\"mapper\":{\"ca\":\"\",\"qs\":[],\"url\":\"https://local.make.cloud/api/not-existing-page\",\"gzip\":true,\"method\":\"get\",\"headers\":[],\"timeout\":\"\",\"authPass\":\"\",\"authUser\":\"\",\"bodyType\":\"\",\"shareCookies\":false,\"parseResponse\":false,\"followRedirect\":true,\"useQuerystring\":false,\"rejectUnauthorized\":true},\"metadata\":{\"designer\":{\"x\":0,\"y\":0},\"restore\":{\"qs\":{\"mode\":\"chose\",\"items\":[]},\"method\":{\"mode\":\"chose\",\"label\":\"GET\"},\"headers\":{\"mode\":\"chose\",\"items\":[]},\"bodyType\":{\"label\":\"\"}},\"parameters\":[{\"name\":\"handleErrors\",\"type\":\"boolean\",\"label\":\"Evaluate all states as errors (except for 2xx and 3xx )\",\"required\":true}],\"expect\":[{\"name\":\"url\",\"type\":\"url\",\"label\":\"URL\",\"required\":true},{\"name\":\"method\",\"type\":\"select\",\"label\":\"Method\",\"required\":true,\"validate\":{\"enum\":[\"get\",\"head\",\"post\",\"put\",\"patch\",\"delete\"]}},{\"name\":\"headers\",\"spec\":[{\"name\":\"name\",\"type\":\"text\",\"label\":\"Name\",\"required\":true},{\"name\":\"value\",\"type\":\"text\",\"label\":\"Value\"}],\"type\":\"array\",\"label\":\"Headers\",\"labels\":{\"add\":\"Add a header\",\"edit\":\"Edit a header\"}},{\"name\":\"qs\",\"spec\":[{\"name\":\"name\",\"type\":\"text\",\"label\":\"Name\",\"required\":true},{\"name\":\"value\",\"type\":\"text\",\"label\":\"Value\"}],\"type\":\"array\",\"label\":\"Query String\",\"labels\":{\"add\":\"Add parameter\",\"edit\":\"Edit parameter\"}},{\"name\":\"bodyType\",\"type\":\"select\",\"label\":\"Body type\",\"validate\":{\"enum\":[\"raw\",\"x_www_form_urlencoded\",\"multipart_form_data\"]}},{\"name\":\"parseResponse\",\"type\":\"boolean\",\"label\":\"Parse response\",\"required\":true},{\"name\":\"authUser\",\"type\":\"text\",\"label\":\"User name\"},{\"name\":\"authPass\",\"type\":\"password\",\"label\":\"Password\"},{\"name\":\"timeout\",\"type\":\"uinteger\",\"label\":\"Timeout\",\"validate\":{\"max\":300,\"min\":1}},{\"name\":\"shareCookies\",\"type\":\"boolean\",\"label\":\"Share cookies with other HTTP modules\",\"required\":true},{\"name\":\"ca\",\"type\":\"cert\",\"label\":\"Self-signed certificate\",\"multiline\":true},{\"name\":\"rejectUnauthorized\",\"type\":\"boolean\",\"label\":\"Reject connections that are using unverified (self-signed) certificates\",\"required\":true},{\"name\":\"followRedirect\",\"type\":\"boolean\",\"label\":\"Follow redirect\",\"required\":true},{\"name\":\"useQuerystring\",\"type\":\"boolean\",\"label\":\"Disable serialization of multiple same query string keys as arrays\",\"required\":true},{\"name\":\"gzip\",\"type\":\"boolean\",\"label\":\"Request compressed content\",\"required\":true}]},\"onerror\":[{\"id\":2,\"module\":\"builtin:Break\",\"version\":1,\"parameters\":{},\"mapper\":{\"count\":\"3\",\"retry\":true,\"interval\":\"1\"},\"metadata\":{\"designer\":{\"x\":300,\"y\":0},\"restore\":{\"retry\":{\"mode\":\"chose\"}},\"expect\":[{\"name\":\"retry\",\"type\":\"boolean\",\"label\":\"Automatically complete execution\",\"required\":true},{\"name\":\"count\",\"type\":\"uinteger\",\"label\":\"Number of attempts\",\"required\":true},{\"name\":\"interval\",\"type\":\"uinteger\",\"label\":\"Interval between attempts\",\"required\":true}]}}]}],\"metadata\":{\"version\":1,\"scenario\":{\"autoCommit\":true,\"autoCommitTriggerLast\":true,\"roundtrips\":1,\"maxErrors\":3}}}","failer":1}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dlq":{"type":"object","properties":{"failer":{"type":"integer"},"blueprint":{"type":"object","properties":{"flow":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"ca":{"type":"string"},"qs":{"type":"array","items":{}},"url":{"type":"string","format":"uri"},"gzip":{"type":"boolean"},"method":{"type":"string"},"headers":{"type":"array","items":{}},"timeout":{"type":"string"},"authPass":{"type":"string"},"authUser":{"type":"string"},"bodyType":{"type":"string"},"shareCookies":{"type":"boolean"},"parseResponse":{"type":"boolean"},"followRedirect":{"type":"boolean"},"useQuerystring":{"type":"boolean"},"rejectUnauthorized":{"type":"boolean"}}},"module":{"type":"string","format":"uri"},"onerror":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"count":{"type":"string","format":"utc-millisec"},"retry":{"type":"boolean"},"interval":{"type":"string","format":"utc-millisec"}}},"module":{"type":"string","format":"uri"},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}},"restore":{"type":"object","properties":{"retry":{"type":"object","properties":{"mode":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}}}},"parameters":{"type":"object"}}}},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object"}},"restore":{"type":"object","properties":{"qs":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"method":{"type":"object","properties":{"mode":{"type":"string"},"label":{"type":"string"}}},"headers":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"bodyType":{"type":"object","properties":{"label":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}},"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}}}},"parameters":{"type":"object","properties":{"handleErrors":{"type":"boolean"}}}}}},"name":{"type":"string"},"metadata":{"type":"object","properties":{"version":{"type":"integer"},"scenario":{"type":"object","properties":{"maxErrors":{"type":"integer"},"autoCommit":{"type":"boolean"},"roundtrips":{"type":"integer","deprecated":true,"description":"This property is deprecated. Any value sent in a request is ignored: it is always stored and returned as `1`, and every execution runs a single cycle.\n"}}}}}}}}}}},"example":{"dlq":{"failer":1,"blueprint":{"flow":[{"id":1,"mapper":{"ca":"","qs":[],"url":"https://local.make.cloud/api/not-existing-page","gzip":true,"method":"get","headers":[],"timeout":"","authPass":"","authUser":"","bodyType":"","shareCookies":false,"parseResponse":false,"followRedirect":true,"useQuerystring":false,"rejectUnauthorized":true},"module":"http:ActionSendData","onerror":[{"id":2,"mapper":{"count":"3","retry":true,"interval":"1"},"module":"builtin:Break","version":1,"metadata":{"expect":[{"name":"retry","type":"boolean","label":"Automatically complete execution","required":true},{"name":"count","type":"uinteger","label":"Number of attempts","required":true},{"name":"interval","type":"uinteger","label":"Interval between attempts","required":true}],"restore":{"retry":{"mode":"chose"}},"designer":{"x":300,"y":0}},"parameters":{}}],"version":3,"metadata":{"expect":[{"name":"url","type":"url","label":"URL","required":true},{"name":"method","type":"select","label":"Method","required":true,"validate":{"enum":["get","head","post","put","patch","delete"]}},{"name":"headers","spec":[{"name":"name","type":"text","label":"Name","required":true},{"name":"value","type":"text","label":"Value"}],"type":"array","label":"Headers","labels":{"add":"Add a header","edit":"Edit a header"}},{"name":"qs","spec":[{"name":"name","type":"text","label":"Name","required":true},{"name":"value","type":"text","label":"Value"}],"type":"array","label":"Query String","labels":{"add":"Add parameter","edit":"Edit parameter"}},{"name":"bodyType","type":"select","label":"Body type","validate":{"enum":["raw","x_www_form_urlencoded","multipart_form_data"]}},{"name":"parseResponse","type":"boolean","label":"Parse response","required":true},{"name":"authUser","type":"text","label":"User name"},{"name":"authPass","type":"password","label":"Password"},{"name":"timeout","type":"uinteger","label":"Timeout","validate":{"max":300,"min":1}},{"name":"shareCookies","type":"boolean","label":"Share cookies with other HTTP modules","required":true},{"name":"ca","type":"cert","label":"Self-signed certificate","multiline":true},{"name":"rejectUnauthorized","type":"boolean","label":"Reject connections that are using unverified (self-signed) certificates","required":true},{"name":"followRedirect","type":"boolean","label":"Follow redirect","required":true},{"name":"useQuerystring","type":"boolean","label":"Disable serialization of multiple same query string keys as arrays","required":true},{"name":"gzip","type":"boolean","label":"Request compressed content","required":true}],"restore":{"qs":{"mode":"chose","items":[]},"method":{"mode":"chose","label":"GET"},"headers":{"mode":"chose","items":[]},"bodyType":{"label":""}},"designer":{"x":0,"y":0},"parameters":[{"name":"handleErrors","type":"boolean","label":"Evaluate all states as errors (except for 2xx and 3xx )","required":true}]},"parameters":{"handleErrors":false}}],"name":"Integration of failing scenario","metadata":{"version":1,"scenario":{"maxErrors":3,"autoCommit":true,"roundtrips":1}}}}}}}},"403":{"description":"A module in the submitted blueprint places a locked connection or key the user is not allowed to use (`IM002`, placement guard). Returned only when locked-entities enforcement is enabled for the organization; an untouched frozen module and releasing a locked entity (swapping it out or removing its module) always pass.\n"}}},"delete":{"tags":["Incomplete executions"],"summary":"Delete - deprecated","deprecated":true,"description":"Required scope: datastores:write","security":[{"token":["dlqs:write"]}],"parameters":[{"name":"dlqId","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dlq":{"type":"string"}}},"examples":{"delete":{"summary":"Delete","value":{"dlq":"ada87173334b44d1907270064edbd7dd"}}}}}}}}},"/dlqs/{dlqId}/blueprint":{"get":{"tags":["Incomplete executions"],"summary":"Get failed scenario blueprint","description":"Gets the blueprint of the scenario that caused the incomplete execution.","security":[{"token":["dlqs:read"]}],"parameters":[{"name":"dlqId","in":"path","schema":{"type":"string"},"required":true,"example":"a07e16f2ad134bf49cf83a00aa95c0a5","description":"The ID of the incomplete execution. Get the ID values of the incomplete executions of a scenario with the API call `GET /dlqs?scenarioId={scenarioId}`."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"response":{"type":"object","properties":{"blueprint":{"type":"object","properties":{"flow":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"ca":{"type":"string"},"qs":{"type":"array","items":{}},"url":{"type":"string","format":"uri"},"gzip":{"type":"boolean"},"method":{"type":"string"},"headers":{"type":"array","items":{}},"timeout":{"type":"string"},"authPass":{"type":"string"},"authUser":{"type":"string"},"bodyType":{"type":"string"},"shareCookies":{"type":"boolean"},"parseResponse":{"type":"boolean"},"followRedirect":{"type":"boolean"},"useQuerystring":{"type":"boolean"},"rejectUnauthorized":{"type":"boolean"}}},"module":{"type":"string","format":"uri"},"onerror":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"count":{"type":"string","format":"utc-millisec"},"retry":{"type":"boolean"},"interval":{"type":"string","format":"utc-millisec"}}},"module":{"type":"string","format":"uri"},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}},"restore":{"type":"object","properties":{"retry":{"type":"object","properties":{"mode":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}}}},"parameters":{"type":"object"}}}},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object"}},"restore":{"type":"object","properties":{"qs":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"method":{"type":"object","properties":{"mode":{"type":"string"},"label":{"type":"string"}}},"headers":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"bodyType":{"type":"object","properties":{"label":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}},"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}}}},"parameters":{"type":"object","properties":{"handleErrors":{"type":"boolean"}}}}}},"name":{"type":"string"},"metadata":{"type":"object","properties":{"version":{"type":"integer"},"scenario":{"type":"object","properties":{"maxErrors":{"type":"integer"},"autoCommit":{"type":"boolean"},"roundtrips":{"type":"integer","deprecated":true,"description":"This property is deprecated. Any value sent in a request is ignored: it is always stored and returned as `1`, and every execution runs a single cycle.\n"}}}}}}},"company":{"type":"integer"},"idSequence":{"type":"integer"},"reason":{"type":"string"}}}}},"example":{"code":"OK","response":{"blueprint":{"flow":[{"id":1,"mapper":{"ca":"","qs":[],"url":"https://local.make.cloud/api/not-existing-page","gzip":true,"method":"get","headers":[],"timeout":"","authPass":"","authUser":"","bodyType":"","shareCookies":false,"parseResponse":false,"followRedirect":true,"useQuerystring":false,"rejectUnauthorized":true},"module":"http:ActionSendData","onerror":[{"id":2,"mapper":{"count":"3","retry":true,"interval":"1"},"module":"builtin:Break","version":1,"metadata":{"expect":[{"name":"retry","type":"boolean","label":"Automatically complete execution","required":true},{"name":"count","type":"uinteger","label":"Number of attempts","required":true},{"name":"interval","type":"uinteger","label":"Interval between attempts","required":true}],"restore":{"retry":{"mode":"chose"}},"designer":{"x":300,"y":0}},"parameters":{}}],"version":3,"metadata":{"expect":[{"name":"url","type":"url","label":"URL","required":true},{"name":"method","type":"select","label":"Method","required":true,"validate":{"enum":["get","head","post","put","patch","delete"]}},{"name":"headers","spec":[{"name":"name","type":"text","label":"Name","required":true},{"name":"value","type":"text","label":"Value"}],"type":"array","label":"Headers","labels":{"add":"Add a header","edit":"Edit a header"}},{"name":"qs","spec":[{"name":"name","type":"text","label":"Name","required":true},{"name":"value","type":"text","label":"Value"}],"type":"array","label":"Query String","labels":{"add":"Add parameter","edit":"Edit parameter"}},{"name":"bodyType","type":"select","label":"Body type","validate":{"enum":["raw","x_www_form_urlencoded","multipart_form_data"]}},{"name":"parseResponse","type":"boolean","label":"Parse response","required":true},{"name":"authUser","type":"text","label":"User name"},{"name":"authPass","type":"password","label":"Password"},{"name":"timeout","type":"uinteger","label":"Timeout","validate":{"max":300,"min":1}},{"name":"shareCookies","type":"boolean","label":"Share cookies with other HTTP modules","required":true},{"name":"ca","type":"cert","label":"Self-signed certificate","multiline":true},{"name":"rejectUnauthorized","type":"boolean","label":"Reject connections that are using unverified (self-signed) certificates","required":true},{"name":"followRedirect","type":"boolean","label":"Follow redirect","required":true},{"name":"useQuerystring","type":"boolean","label":"Disable serialization of multiple same query string keys as arrays","required":true},{"name":"gzip","type":"boolean","label":"Request compressed content","required":true}],"restore":{"qs":{"mode":"chose","items":[]},"method":{"mode":"chose","label":"GET"},"headers":{"mode":"chose","items":[]},"bodyType":{"label":""}},"designer":{"x":0,"y":0},"parameters":[{"name":"handleErrors","type":"boolean","label":"Evaluate all states as errors (except for 2xx and 3xx )","required":true}]},"parameters":{"handleErrors":false}}],"name":"Integration of failing scenario","metadata":{"user":{"id":1},"version":1,"scenario":{"maxErrors":3,"autoCommit":true,"roundtrips":1}}},"company":1,"idSequence":3,"reason":"IP address is not valid."}}}}}}}},"/dlqs/{dlqId}/bundle":{"get":{"tags":["Incomplete executions"],"summary":"Get incomplete execution bundles","description":"Gets bundles that caused the incomplete execution.","security":[{"token":["dlqs:read"]}],"parameters":[{"name":"dlqId","in":"path","schema":{"type":"string"},"required":true,"example":"a07e16f2ad134bf49cf83a00aa95c0a5","description":"The ID of the incomplete execution. Get the ID values of the incomplete executions of a scenario with the API call `GET /dlqs?scenarioId={scenarioId}`."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"response":{"type":"object"}}},"example":{"code":"OK","response":{"1":{"error":{"type":"InvalidConfigurationError","message":"IP address is not valid."}},"3":{"value":"Example error text."}}}}}}}}},"/dlqs/{dlqId}/logs":{"get":{"tags":["Incomplete executions"],"summary":"List incomplete executions logs","description":"Gets data about attempts to resolve an incomplete execution.","security":[{"token":["dlqs:read"]}],"parameters":[{"name":"dlqId","in":"path","schema":{"type":"string"},"required":true,"example":"a07e16f2ad134bf49cf83a00aa95c0a5","description":"The ID of the incomplete execution. Get the ID values of the incomplete executions of a scenario with the API call `GET /dlqs?scenarioId={scenarioId}`."},{"name":"status","in":"query","schema":{"type":"integer","enum":[1,2,3]},"description":"The status number of the incomplete execution. The status numbers correspond to the following statuses:\n\n- 1: success,\n - 2: warning,\n - 3: error.","example":3},{"name":"from","in":"query","schema":{"type":"integer","format":"timestamp"},"example":"1548975600000","description":"The moment from which you want to list the incomplete execution logs. The timestamp is in the [UNIX timestamp](https://en.wikipedia.org/wiki/Unix_time) format."},{"name":"to","in":"query","schema":{"type":"integer","format":"timestamp"},"example":"1574782119387","description":"Limits the returned incomplete execution logs to those that were created before the specified moment. The timestamp is in the [UNIX timestamp](https://en.wikipedia.org/wiki/Unix_time) format."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dlqLogs":{"type":"array","items":{"type":"object","properties":{"imtId":{"type":"string"},"duration":{"type":"integer"},"transfer":{"type":"integer"},"operations":{"type":"integer"},"centicredits":{"type":"bigint"},"teamId":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string"},"authorId":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"status":{"type":"integer"},"instant":{"type":"boolean"},"organizationId":{"type":"integer"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"example":{"dlqLogs":[{"imtId":"1574777797796_dlq.a07e16f2ad134bf49cf83a00aa95c0a5.manual.f241ee9b0d344964a5ce54356b9ed98e","duration":728,"transfer":0,"operations":1,"centicredits":100,"teamId":1,"id":"f241ee9b0d344964a5ce54356b9ed98e","type":"manual","authorId":null,"timestamp":"2019-11-26T14:16:37.796Z","status":3},{"imtId":"1574777795371_dlq.a07e16f2ad134bf49cf83a00aa95c0a5.manual.7f65bad83eb74c899a70c76794d8afc3","duration":795,"transfer":0,"operations":1,"centicredits":100,"teamId":1,"id":"7f65bad83eb74c899a70c76794d8afc3","type":"manual","authorId":null,"timestamp":"2019-11-26T14:16:35.371Z","status":3}],"pg":{"sortBy":"imtId","sortDir":"desc","limit":50,"offset":0}}}}}}}},"/dlqs/{dlqId}/logs/{executionDlqId}":{"get":{"tags":["Incomplete executions"],"summary":"Incomplete execution log detail","description":"Gets detail of the specified incomplete execution log.","security":[{"token":["dlqs:read"]}],"parameters":[{"name":"dlqId","in":"path","schema":{"type":"string"},"required":true,"example":"a07e16f2ad134bf49cf83a00aa95c0a5","description":"The ID of the incomplete execution. Get the ID values of the incomplete executions of a scenario with the API call `GET /dlqs?scenarioId={scenarioId}`."},{"name":"executionDlqId","in":"path","schema":{"type":"string"},"required":true,"description":"The ID of the incomplete execution log. Get the ID values of the incomplete execution logs with the API call `GET /dlqs/{dlqId}/logs`.","example":"1356b72d781649a18692a0d4d09cd977"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dlqLog":{"type":"object","properties":{"imtId":{"type":"string"},"duration":{"type":"integer"},"transfer":{"type":"integer"},"operations":{"type":"integer"},"centicredits":{"type":"bigint"},"teamId":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string"},"authorId":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"status":{"type":"integer"},"instant":{"type":"boolean"},"organizationId":{"type":"integer"}}}}},"example":{"dlqLog":{"imtId":"1594117724361_dlq.00946714d6dd4a4cb091fe5435a8d197.manual.28a4794e85894c80a483777d6958160f","duration":1353,"operations":1,"centicredits":100,"transfer":87,"organizationId":1,"teamId":1,"id":"28a4794e85894c80a483777d6958160f","type":"manual","authorId":null,"instant":false,"timestamp":"2020-07-07T10:28:44.361Z","status":3}}}}}}}},"/dlqs/{dlqId}/retry":{"post":{"tags":["Incomplete executions"],"summary":"Retry incomplete execution","description":"Triggers a retry of the specified incomplete execution. The incomplete execution runs with the blueprint from when the error happened.\n\nIf you need to update the blueprint first, use the endpoint `PATCH /dlqs/{dlqId}`.\n","security":[{"token":["dlqs:write"]}],"parameters":[{"name":"dlqId","in":"path","schema":{"type":"string"},"required":true,"example":"a07e16f2ad134bf49cf83a00aa95c0a5","description":"The ID of the incomplete execution. Get the ID values of the incomplete executions of a scenario with the API call `GET /dlqs?scenarioId={scenarioId}`."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dlq":{"type":"string"}}},"example":{"dlq":"a07e16f2ad134bf49cf83a00aa95c0a5"}}}}}}},"/dlqs/retry":{"post":{"tags":["Incomplete executions"],"summary":"Retry multiple incomplete executions","description":"Triggers a retry of the specified incomplete executions. You can either use the `all` parameter to retry all incomplete executions of the scenario, or specify a list of incomplete execution IDs in the `ids` property.\n\nYou can use the `exceptIds` parameter to exclude incomplete executions from retrying.\n\nThe incomplete executions run with the blueprint from when the error happened. If you need to update the blueprint first, use the endpoint `PATCH /dlqs/{dlqId}`.\n\nMake puts the incomplete executions in a queue. If you are retrying a large number of incomplete executions, there might be a delay between receiving the response and Make retrying the incomplete execution.\n","security":[{"token":["dlqs:write"]}],"parameters":[{"name":"scenarioId","in":"query","schema":{"type":"integer"},"required":true,"example":112,"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/scenarios-get) API call."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"description":"The list of incomplete execution IDs you want to retry. All of the IDs have to belong to the same scenario."},"all":{"type":"boolean","description":"Set to `true` to retry all incomplete executions of the scenario."},"exceptIds":{"type":"array","items":{"type":"string"},"description":"You can use this parameter together with the `all` parameter to specify incomplete execution IDs which shouldn't be retried."}}},"examples":{"specify-ids":{"summary":"Retry multiple","description":"Retry multiple incomplete executions of a scenario. Specify the incomplete execution IDs in the `dlqs` array.","value":{"ids":["a07e16f2ad134bf49cf83a00aa95c0a5","mvrij98emciefm98cmemf345an18e8q3"]}},"all-except":{"summary":"Retry all","description":"Retry all incomplete executions of a scenario except for one.","value":{"all":true,"exceptIds":["mvrij98emciefm98cmemf345an18e8q3"]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dlqs":{"type":"array","items":{"type":"string"}}}},"examples":{"specify-ids":{"value":{"dlqs":["a07e16f2ad134bf49cf83a00aa95c0a5","mvrij98emciefm98cmemf345an18e8q3"]}},"all-except":{"value":{"dlqs":["a07e16f2ad134bf49cf83a00aa95c0a5","g14u43ajifei98mcsemcefmsi987e1s9"]}}}}}}}}},"/imt-forms/endpoints/{app}/{version}/{endpoint}":{"get":{"x-internal":true,"operationId":"getEndpointInputForm","tags":["Endpoints"],"summary":"Get an Endpoint input form","description":"Returns an IMT Form for testing an SDK (`app#name`) or native app Endpoint.\nRequires TEAM_VIEW for the supplied team (ORGANIZATION_VIEW for admin requests),\nruntime app access for SDK apps, and the endpoint-execution feature flag.\nNative endpoints are resolved directly, including private and deprecated definitions.\nSDK authors see pending input, attached-account and scope edits; other callers see published values.\n\nThe required `connectionId` account field is omitted when there are no attached accounts.\nIts `options.scope` maps each resolved account type (including SDK aliases) to that endpoint's\nrequired OAuth scopes. Native account types can require different scopes. Connection-default\nscope injection remains in the existing connection backend flow.\n\n`input.spec` contains the endpoint input fields, expanded from JSON Schema where supported,\nand is always present, including when empty. Hidden fields preserve the execution coordinates\nand authorized team. Version lookup and submission use the numeric major version.\nThe Test button submits the complete JSON values directly to POST /endpoints/v1/execute,\nwithout an RPC data wrapper. The response omits multipart because this form uses JSON.\n","security":[{"token":["imt-forms:read"]}],"parameters":[{"name":"app","in":"path","required":true,"description":"Native package name or SDK name prefixed with app# (URL-encode the hash). App names can contain up to 37 characters, including the generated suffix.","schema":{"type":"string","minLength":3,"maxLength":41,"pattern":"^(app#)?[a-z][0-9a-z-]{1,35}[0-9a-z]$"},"examples":{"connected":{"value":"app#example"},"no-account":{"value":"example"}}},{"name":"version","in":"path","required":true,"description":"Major or full numeric version without leading zeros in any component; the major must be a positive integer no greater than 32767 (the database smallint limit).","schema":{"type":"string","pattern":"^[1-9][0-9]*(?:\\.(?:0|[1-9][0-9]*)){0,2}$"},"examples":{"connected":{"value":"1.2.3"},"no-account":{"value":"1"}}},{"name":"endpoint","in":"path","required":true,"description":"Endpoint name.","schema":{"type":"string","minLength":3,"maxLength":128,"pattern":"^[a-zA-Z][0-9a-zA-Z]{1,126}[0-9a-zA-Z]$"},"examples":{"connected":{"value":"listItems"},"no-account":{"value":"ping"}}},{"name":"teamId","in":"query","required":true,"description":"Team authorized for the subsequent execution.","schema":{"type":"integer","minimum":1,"maximum":2147483647},"examples":{"connected":{"value":123},"no-account":{"value":123}}}],"responses":{"200":{"description":"Endpoint input form.","headers":{"imt-remote-formula":{"description":"Identifies an IMT Form response.","schema":{"type":"string","enum":["1"]}}},"content":{"application/json":{"schema":{"type":"object","required":["config","values","buttons"],"properties":{"config":{"type":"array","items":{"type":"object","additionalProperties":true}},"values":{"type":"object","required":["appName","appVersion","endpointName","teamId"],"properties":{"appName":{"type":"string"},"appVersion":{"type":"integer"},"endpointName":{"type":"string"},"teamId":{"type":"integer"}}},"buttons":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"examples":{"connected":{"value":{"config":[{"name":"connectionId","type":"account:app#example","label":"{{!apps.forms.connection}}","required":true,"options":{"scope":{"app#example":["items.read"]}}},{"name":"input","type":"collection","label":"Input","spec":[{"name":"limit","type":"number"}]},{"name":"appName","type":"hidden","default":"app#example"},{"name":"appVersion","type":"hidden","default":1},{"name":"endpointName","type":"hidden","default":"listItems"},{"name":"teamId","type":"hidden","default":123}],"values":{"appName":"app#example","appVersion":1,"endpointName":"listItems","teamId":123},"buttons":[{"label":"{{!common.close}}","action":"close"},{"label":"{{!common.test}}","action":"http","method":"POST","address":"/endpoints/v1/execute"}]}},"no-account":{"value":{"config":[{"name":"input","type":"collection","label":"Input","spec":[]},{"name":"appName","type":"hidden","default":"example"},{"name":"appVersion","type":"hidden","default":1},{"name":"endpointName","type":"hidden","default":"ping"},{"name":"teamId","type":"hidden","default":123}],"values":{"appName":"example","appVersion":1,"endpointName":"ping","teamId":123},"buttons":[{"label":"{{!common.close}}","action":"close"},{"label":"{{!common.test}}","action":"http","method":"POST","address":"/endpoints/v1/execute"}]}}}}}},"400":{"description":"Invalid coordinates or teamId, or the SDK endpoint does not exist (IM005)."},"401":{"description":"Authentication or the imt-forms:read token scope is missing."},"403":{"description":"The caller lacks team permission or SDK app access, or the SDK app does not exist."},"404":{"description":"The native app endpoint does not exist (IM013)."},"501":{"description":"Endpoint execution is not enabled on this environment."}}}},"/endpoints/v1/execute":{"post":{"x-internal":true,"operationId":"postEndpointsV1Execute","tags":["Endpoints"],"summary":"Execute Endpoint","description":"Executes an App Endpoint (see `GET /imt/endpoints-usable` and the SDK Apps / Endpoints section for how\nEndpoints are defined) and returns its raw output.\n\nThe response's `output` is currently a free-form, executor-defined value — its shape depends entirely on\nthe executed Endpoint and is not constrained by this route.\n\nTo make a request safe to retry, send an `idempotencyKey`. Within the Team, a repeated key returns the\noutcome of the execution that first used it instead of running the Endpoint again. The response's\n`execution.replayed` tells a replay from a fresh execution.\n","security":[{"token":["endpoints:run"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["appName","appVersion","endpointName","teamId"],"properties":{"appName":{"type":"string","minLength":3,"maxLength":43,"pattern":"^(app(#|%23))?[a-z][0-9a-z-]{1,35}[0-9a-z]$","description":"App name (up to 37 characters, including a generated suffix), optionally prefixed with app# or app%23."},"appVersion":{"type":"integer","minimum":0,"description":"Version of the App from which the Endpoint should be executed."},"endpointName":{"type":"string","minLength":3,"maxLength":128,"pattern":"^[a-zA-Z][0-9a-zA-Z]{1,126}[0-9a-zA-Z]$","description":"Name of the Endpoint to be executed."},"teamId":{"type":"integer","minimum":1,"maximum":2147483647,"description":"Authorized Team whose organization owns the execution. Always required."},"connectionId":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"ID of the Connection to be used for executing the Endpoint."},"input":{"type":"object","additionalProperties":true,"description":"Object containing input values of the Endpoint."},"confidential":{"type":"boolean","default":false,"description":"Run confidentially, like a scenario with \"Data is confidential\" enabled: the execution log keeps no input, output or error data, only metadata (status, duration, sizes for billing). The execution still appears in the Endpoint execution logs, marked `confidential`, with no data to retrieve."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9_.:-]+$","description":"Client-chosen key that makes the request safe to retry. Within the Team, a repeated key returns the outcome of the execution that first used it instead of running the Endpoint again; the same key with a different request fails with `422`. Use a fresh unique value, such as a UUID, for each logical request."}}},"examples":{"list-contacts":{"summary":"Execute a connection-bound Endpoint","value":{"appName":"app#my-crm","appVersion":1,"endpointName":"listContacts","teamId":1234,"connectionId":9001,"input":{"limit":10}}},"confidential-list-contacts":{"summary":"Execute an Endpoint without keeping its data in the execution log","value":{"appName":"app#my-crm","appVersion":1,"endpointName":"listContacts","teamId":1234,"connectionId":9001,"confidential":true,"input":{"limit":10}}},"idempotent-list-contacts":{"summary":"Execute an Endpoint safely retryable with an idempotencyKey","value":{"appName":"app#my-crm","appVersion":1,"endpointName":"listContacts","teamId":1234,"connectionId":9001,"idempotencyKey":"6f1d2c5e-9a3b-4c7d-8e1f-0a2b3c4d5e6f","input":{"limit":10}}},"no-auth-ping":{"summary":"Execute a no-auth Endpoint without input","value":{"appName":"app#my-crm","appVersion":1,"endpointName":"ping","teamId":1234}}}}}},"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"type":"object","required":["output"],"properties":{"output":{"description":"Raw result of the Endpoint execution. The shape is defined by the executed Endpoint itself and is not constrained by this route."},"execution":{"type":"object","required":["id"],"description":"Identifies the execution that produced `output`.","properties":{"id":{"type":"string","description":"ID of the execution, under which it appears in the Endpoint execution logs. On a replay, the ID of the earlier execution that used the `idempotencyKey`."},"replayed":{"type":"boolean","enum":[true],"description":"Present, and `true`, only when `output` is replayed from an earlier execution."},"confidential":{"type":"boolean","enum":[true],"description":"Present, and `true`, only when the execution kept no data in its log."}}}}},"examples":{"list-contacts":{"summary":"Execute a connection-bound Endpoint","value":{"output":{"contacts":[{"id":1,"name":"Jane Doe"}]},"execution":{"id":"0199f3a2-7c1e-7b3a-9d4e-5f6a7b8c9d0e"}}},"idempotent-list-contacts":{"summary":"Repeat of an earlier request with the same idempotencyKey, replayed","value":{"output":{"contacts":[{"id":1,"name":"Jane Doe"}]},"execution":{"id":"0199f3a2-7c1e-7b3a-9d4e-5f6a7b8c9d0e","replayed":true}}},"no-auth-ping":{"summary":"Execute a no-auth Endpoint without input","value":{"output":{"status":"ok"},"execution":{"id":"0199f3a4-1b2c-7d3e-8f4a-5b6c7d8e9f0a"}}}}}}},"400":{"description":"The request body failed validation, including when the required Team is omitted."},"403":{"description":"The Team is not accessible to the caller or conflicts with the signed organization context."},"409":{"description":"The `idempotencyKey` belongs to an execution that is still running. Retry once it has finished."},"422":{"description":"The `idempotencyKey` was already used with a different request, or belongs to a confidential execution, whose output is never stored and so cannot be replayed."},"424":{"description":"The Endpoint execution failed. A repeated request whose earlier execution with the same `idempotencyKey` failed receives this status instead of running the Endpoint again."},"429":{"description":"The owning organization has no shared execution capacity available."},"501":{"description":"Endpoint execution is not enabled on this environment."},"503":{"description":"The `idempotencyKey` could not be checked or claimed. Retry with the same key."}}}},"/modules/v1/execute":{"post":{"x-internal":true,"operationId":"postModulesV1Execute","tags":["Modules"],"summary":"Execute a Module synchronously","description":"Executes one unsaved action or search through Executor without creating a scenario, history entry, result store, or replay mechanism.\nModule execution must be enabled explicitly. Dynamic configuration metadata, file transport, and deadline/disconnect propagation remain unavailable until their cross-service contracts are complete.\nWebAPI requires `scenarios:run` and forwards the authenticated execution context to Executor. Executor enforces team `SCENARIO_START`, permits only verified admin requests with `SCENARIO_VERIFY`, validates the organization binding, and remains responsible for runtime eligibility. No separate facade license gate applies.\nAn HTTP error or missing response does not prove that execution did not start or that no external effects occurred, so callers must not retry automatically.\n","security":[{"token":["scenarios:run"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["teamId","module","references"],"properties":{"teamId":{"type":"integer","minimum":1,"maximum":2147483647},"module":{"type":"object","additionalProperties":false,"required":["module","version","parameters","mapper"],"description":"Dynamic configuration metadata is not accepted until the signed configuration handoff is available.","properties":{"module":{"type":"string","minLength":7,"maxLength":83,"pattern":"^(?:app#)?[a-z][0-9a-z-]+[0-9a-z]:[a-zA-Z][0-9a-zA-Z]+[0-9a-zA-Z]$"},"version":{"type":"integer","minimum":0},"parameters":{"type":"object","additionalProperties":true},"mapper":{"type":"object","additionalProperties":true}}},"references":{"type":"object","additionalProperties":false,"required":["modules"],"properties":{"modules":{"type":"object","propertyNames":{"pattern":"^[1-9][0-9]*$"},"additionalProperties":{"type":"object","additionalProperties":false,"required":["bundle"],"properties":{"bundle":{"type":"object","additionalProperties":true}}}}}}}},"examples":{"module-execution":{"value":{"teamId":857,"module":{"module":"google-sheets:filterRows","version":2,"parameters":{"__IMTCONN__":16705},"mapper":{}},"references":{"modules":{}}}}}}}},"responses":{"200":{"description":"The Module completed successfully, including success with warnings.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["status","executionId","target","durationMs","output"],"properties":{"status":{"type":"string","enum":["succeeded"]},"executionId":{"type":"string"},"target":{"type":"object","additionalProperties":false,"required":["appName","appVersion","moduleName"],"properties":{"appName":{"type":"string"},"appVersion":{"type":"integer","minimum":0},"moduleName":{"type":"string"}}},"durationMs":{"type":"integer","minimum":0},"output":{"type":"object","additionalProperties":false,"required":["bundles"],"properties":{"bundles":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","phase","message"],"properties":{"code":{"type":"string"},"phase":{"type":"string"},"message":{"type":"string"}}}}}},"examples":{"module-execution":{"value":{"status":"succeeded","executionId":"01JY6QPVN4P2J41H7D11WQ1RHT","target":{"appName":"google-sheets","appVersion":2,"moduleName":"filterRows"},"durationMs":83,"output":{"bundles":[{"rowNumber":4,"values":["Ada","Lovelace"]}]}}}}}}},"400":{"description":"The public request is malformed, or Executor returned an HTTP 400 rejection.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["code","message"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"module":{"type":"object","additionalProperties":false,"required":["status","code","phase","executionStarted","sideEffects"],"properties":{"status":{"type":"string","enum":["rejected","failed","indeterminate"]},"code":{"type":"string"},"phase":{"type":"string"},"executionStarted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"sideEffects":{"type":"string","enum":["none","possible","known"]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","phase","message"],"properties":{"code":{"type":"string"},"phase":{"type":"string"},"message":{"type":"string"}}}},"errors":{"type":"array","minItems":1,"description":"Module field errors for `MAPPING_FAILED` (one entry) and `VALIDATION_FAILED` (one per diagnostic). Messages are not localized.","items":{"type":"object","additionalProperties":false,"required":["path","message"],"properties":{"path":{"type":"string","description":"JSON Pointer into the Mapper, such as `/mapper/email`, or `/mapper` when no single field applies."},"message":{"type":"string"}}}},"output":{"type":"object","additionalProperties":false,"required":["bundles"],"properties":{"bundles":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"usage":{"type":"object","additionalProperties":false,"properties":{"durationMs":{"type":"integer","minimum":0},"operations":{"type":"integer","minimum":0},"transfer":{"type":"integer","minimum":0}}}}}}},"examples":{"module-execution":{"value":{"code":"SC400","message":"Bad Request","detail":"The request body is invalid."}}}}}},"401":{"description":"The token lacks the `scenarios:run` scope.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["code","message"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"module":{"type":"object","additionalProperties":false,"required":["status","code","phase","executionStarted","sideEffects"],"properties":{"status":{"type":"string","enum":["rejected","failed","indeterminate"]},"code":{"type":"string"},"phase":{"type":"string"},"executionStarted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"sideEffects":{"type":"string","enum":["none","possible","known"]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","phase","message"],"properties":{"code":{"type":"string"},"phase":{"type":"string"},"message":{"type":"string"}}}},"errors":{"type":"array","minItems":1,"description":"Module field errors for `MAPPING_FAILED` (one entry) and `VALIDATION_FAILED` (one per diagnostic). Messages are not localized.","items":{"type":"object","additionalProperties":false,"required":["path","message"],"properties":{"path":{"type":"string","description":"JSON Pointer into the Mapper, such as `/mapper/email`, or `/mapper` when no single field applies."},"message":{"type":"string"}}}},"output":{"type":"object","additionalProperties":false,"required":["bundles"],"properties":{"bundles":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"usage":{"type":"object","additionalProperties":false,"properties":{"durationMs":{"type":"integer","minimum":0},"operations":{"type":"integer","minimum":0},"transfer":{"type":"integer","minimum":0}}}}}}},"examples":{"module-execution":{"value":{"code":"IM001","message":"Access denied","detail":"Required scope: scenarios:run"}}}}}},"403":{"description":"The caller lacks the required Module execution authority or the execution context conflicts with the organization binding.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["code","message"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"module":{"type":"object","additionalProperties":false,"required":["status","code","phase","executionStarted","sideEffects"],"properties":{"status":{"type":"string","enum":["rejected","failed","indeterminate"]},"code":{"type":"string"},"phase":{"type":"string"},"executionStarted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"sideEffects":{"type":"string","enum":["none","possible","known"]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","phase","message"],"properties":{"code":{"type":"string"},"phase":{"type":"string"},"message":{"type":"string"}}}},"errors":{"type":"array","minItems":1,"description":"Module field errors for `MAPPING_FAILED` (one entry) and `VALIDATION_FAILED` (one per diagnostic). Messages are not localized.","items":{"type":"object","additionalProperties":false,"required":["path","message"],"properties":{"path":{"type":"string","description":"JSON Pointer into the Mapper, such as `/mapper/email`, or `/mapper` when no single field applies."},"message":{"type":"string"}}}},"output":{"type":"object","additionalProperties":false,"required":["bundles"],"properties":{"bundles":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"usage":{"type":"object","additionalProperties":false,"properties":{"durationMs":{"type":"integer","minimum":0},"operations":{"type":"integer","minimum":0},"transfer":{"type":"integer","minimum":0}}}}}}},"examples":{"module-execution":{"value":{"code":"IM002","message":"Insufficient rights"}}}}}},"422":{"description":"The target or owner is unavailable or unsupported.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["code","message"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"module":{"type":"object","additionalProperties":false,"required":["status","code","phase","executionStarted","sideEffects"],"properties":{"status":{"type":"string","enum":["rejected","failed","indeterminate"]},"code":{"type":"string"},"phase":{"type":"string"},"executionStarted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"sideEffects":{"type":"string","enum":["none","possible","known"]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","phase","message"],"properties":{"code":{"type":"string"},"phase":{"type":"string"},"message":{"type":"string"}}}},"errors":{"type":"array","minItems":1,"description":"Module field errors for `MAPPING_FAILED` (one entry) and `VALIDATION_FAILED` (one per diagnostic). Messages are not localized.","items":{"type":"object","additionalProperties":false,"required":["path","message"],"properties":{"path":{"type":"string","description":"JSON Pointer into the Mapper, such as `/mapper/email`, or `/mapper` when no single field applies."},"message":{"type":"string"}}}},"output":{"type":"object","additionalProperties":false,"required":["bundles"],"properties":{"bundles":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"usage":{"type":"object","additionalProperties":false,"properties":{"durationMs":{"type":"integer","minimum":0},"operations":{"type":"integer","minimum":0},"transfer":{"type":"integer","minimum":0}}}}}}},"examples":{"module-execution":{"value":{"code":"IM016","message":"Action not possible due to dependencies"}}}}}},"424":{"description":"An authorization dependency, worker, execution, or output failure prevented completion.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["code","message"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"module":{"type":"object","additionalProperties":false,"required":["status","code","phase","executionStarted","sideEffects"],"properties":{"status":{"type":"string","enum":["rejected","failed","indeterminate"]},"code":{"type":"string"},"phase":{"type":"string"},"executionStarted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"sideEffects":{"type":"string","enum":["none","possible","known"]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","phase","message"],"properties":{"code":{"type":"string"},"phase":{"type":"string"},"message":{"type":"string"}}}},"errors":{"type":"array","minItems":1,"description":"Module field errors for `MAPPING_FAILED` (one entry) and `VALIDATION_FAILED` (one per diagnostic). Messages are not localized.","items":{"type":"object","additionalProperties":false,"required":["path","message"],"properties":{"path":{"type":"string","description":"JSON Pointer into the Mapper, such as `/mapper/email`, or `/mapper` when no single field applies."},"message":{"type":"string"}}}},"output":{"type":"object","additionalProperties":false,"required":["bundles"],"properties":{"bundles":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"usage":{"type":"object","additionalProperties":false,"properties":{"durationMs":{"type":"integer","minimum":0},"operations":{"type":"integer","minimum":0},"transfer":{"type":"integer","minimum":0}}}}}}},"examples":{"module-execution":{"value":{"code":"SC424","message":"The request failed due to failure of a previous request.","suberrors":[{"message":"Module execution failed."}],"module":{"status":"failed","code":"EXECUTION_FAILED","phase":"execution","executionStarted":true,"sideEffects":"possible"}}}}}}},"429":{"description":"The organization is paused or has no available execution capacity.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["code","message"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"module":{"type":"object","additionalProperties":false,"required":["status","code","phase","executionStarted","sideEffects"],"properties":{"status":{"type":"string","enum":["rejected","failed","indeterminate"]},"code":{"type":"string"},"phase":{"type":"string"},"executionStarted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"sideEffects":{"type":"string","enum":["none","possible","known"]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","phase","message"],"properties":{"code":{"type":"string"},"phase":{"type":"string"},"message":{"type":"string"}}}},"errors":{"type":"array","minItems":1,"description":"Module field errors for `MAPPING_FAILED` (one entry) and `VALIDATION_FAILED` (one per diagnostic). Messages are not localized.","items":{"type":"object","additionalProperties":false,"required":["path","message"],"properties":{"path":{"type":"string","description":"JSON Pointer into the Mapper, such as `/mapper/email`, or `/mapper` when no single field applies."},"message":{"type":"string"}}}},"output":{"type":"object","additionalProperties":false,"required":["bundles"],"properties":{"bundles":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"usage":{"type":"object","additionalProperties":false,"properties":{"durationMs":{"type":"integer","minimum":0},"operations":{"type":"integer","minimum":0},"transfer":{"type":"integer","minimum":0}}}}}}},"examples":{"module-execution":{"value":{"code":"SC429","message":"Too Many Requests"}}}}}},"500":{"description":"Executor failed internally or returned a malformed response.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["code","message"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"module":{"type":"object","additionalProperties":false,"required":["status","code","phase","executionStarted","sideEffects"],"properties":{"status":{"type":"string","enum":["rejected","failed","indeterminate"]},"code":{"type":"string"},"phase":{"type":"string"},"executionStarted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"sideEffects":{"type":"string","enum":["none","possible","known"]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","phase","message"],"properties":{"code":{"type":"string"},"phase":{"type":"string"},"message":{"type":"string"}}}},"errors":{"type":"array","minItems":1,"description":"Module field errors for `MAPPING_FAILED` (one entry) and `VALIDATION_FAILED` (one per diagnostic). Messages are not localized.","items":{"type":"object","additionalProperties":false,"required":["path","message"],"properties":{"path":{"type":"string","description":"JSON Pointer into the Mapper, such as `/mapper/email`, or `/mapper` when no single field applies."},"message":{"type":"string"}}}},"output":{"type":"object","additionalProperties":false,"required":["bundles"],"properties":{"bundles":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"usage":{"type":"object","additionalProperties":false,"properties":{"durationMs":{"type":"integer","minimum":0},"operations":{"type":"integer","minimum":0},"transfer":{"type":"integer","minimum":0}}}}}}},"examples":{"module-execution":{"value":{"code":"SC500","message":"Internal Server Error"}}}}}},"501":{"description":"Module execution is disabled or the selected Module runtime is not implemented.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["code","message"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"module":{"type":"object","additionalProperties":false,"required":["status","code","phase","executionStarted","sideEffects"],"properties":{"status":{"type":"string","enum":["rejected","failed","indeterminate"]},"code":{"type":"string"},"phase":{"type":"string"},"executionStarted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"sideEffects":{"type":"string","enum":["none","possible","known"]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","phase","message"],"properties":{"code":{"type":"string"},"phase":{"type":"string"},"message":{"type":"string"}}}},"errors":{"type":"array","minItems":1,"description":"Module field errors for `MAPPING_FAILED` (one entry) and `VALIDATION_FAILED` (one per diagnostic). Messages are not localized.","items":{"type":"object","additionalProperties":false,"required":["path","message"],"properties":{"path":{"type":"string","description":"JSON Pointer into the Mapper, such as `/mapper/email`, or `/mapper` when no single field applies."},"message":{"type":"string"}}}},"output":{"type":"object","additionalProperties":false,"required":["bundles"],"properties":{"bundles":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"usage":{"type":"object","additionalProperties":false,"properties":{"durationMs":{"type":"integer","minimum":0},"operations":{"type":"integer","minimum":0},"transfer":{"type":"integer","minimum":0}}}}}}},"examples":{"module-execution":{"value":{"code":"SC501","message":"Not Implemented","module":{"status":"rejected","code":"NOT_IMPLEMENTED","phase":"admission","executionStarted":false,"sideEffects":"none"}}}}}}},"503":{"description":"Module execution state or capacity is unavailable.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["code","message"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"},"module":{"type":"object","additionalProperties":false,"required":["status","code","phase","executionStarted","sideEffects"],"properties":{"status":{"type":"string","enum":["rejected","failed","indeterminate"]},"code":{"type":"string"},"phase":{"type":"string"},"executionStarted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"sideEffects":{"type":"string","enum":["none","possible","known"]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","phase","message"],"properties":{"code":{"type":"string"},"phase":{"type":"string"},"message":{"type":"string"}}}},"errors":{"type":"array","minItems":1,"description":"Module field errors for `MAPPING_FAILED` (one entry) and `VALIDATION_FAILED` (one per diagnostic). Messages are not localized.","items":{"type":"object","additionalProperties":false,"required":["path","message"],"properties":{"path":{"type":"string","description":"JSON Pointer into the Mapper, such as `/mapper/email`, or `/mapper` when no single field applies."},"message":{"type":"string"}}}},"output":{"type":"object","additionalProperties":false,"required":["bundles"],"properties":{"bundles":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"usage":{"type":"object","additionalProperties":false,"properties":{"durationMs":{"type":"integer","minimum":0},"operations":{"type":"integer","minimum":0},"transfer":{"type":"integer","minimum":0}}}}}}},"examples":{"module-execution":{"value":{"code":"SC503","message":"Service unavailable"}}}}}}}}},"/execution-capacity/{organizationId}":{"get":{"tags":["Analytics"],"x-internal":true,"summary":"Get parallel execution capacity metrics","description":"Returns historical parallel execution usage metrics for an Organization over a time range, aggregated into samples at a fixed rollup interval. The sample with the highest capacity utilization is picked for each time interval.","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the organization to get execution capacity metrics for","example":12345},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Start of the time range (inclusive), as an ISO 8601 date-time","example":"2026-06-15T00:00:00.000Z"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"End of the time range (exclusive), as an ISO 8601 date-time","example":"2026-06-15T01:00:00.000Z"},{"name":"rollupSeconds","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":86400},"description":"Time interval in seconds used for rolling up the samples. When omitted, a rollup is chosen automatically so the sample count stays at constant size.","example":60}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["rollupSeconds","samples"],"properties":{"rollupSeconds":{"type":"integer","minimum":1,"maximum":86400,"description":"Time interval in seconds that was used for rolling up the samples"},"samples":{"type":"array","description":"Slot usage samples, one per rollup interval in the requested range","items":{"type":"object","required":["snapshotAt","scenarioIds","slots","totalSlots","limit"],"properties":{"snapshotAt":{"type":"string","format":"date-time","description":"Timestamp of the sample"},"scenarioIds":{"type":"array","description":"IDs of the Scenarios executing while this sample was taken","items":{"type":"integer","minimum":1}},"slots":{"type":"array","description":"Number of slots used per Scenario, positionally aligned with scenarioIds","items":{"type":"integer","minimum":1}},"totalSlots":{"type":"integer","minimum":1,"description":"Total number of slots used across all Scenarios in this sample"},"limit":{"type":"integer","description":"The Organization's parallel execution slot limit at the time of the sample"}}}}}},"examples":{"default":{"summary":"One hour of usage rolled up into 60-second samples","value":{"rollupSeconds":60,"samples":[{"snapshotAt":"2026-06-15T00:00:00.000Z","scenarioIds":[101,102],"slots":[2,1],"totalSlots":3,"limit":150},{"snapshotAt":"2026-06-15T00:01:00.000Z","scenarioIds":[101],"slots":[1],"totalSlots":1,"limit":150}]}}}}}},"422":{"description":"The requested range and rollup would yield too many samples","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}}}}},"/execution-capacity/{organizationId}/live":{"get":{"tags":["Analytics"],"x-internal":true,"summary":"Get live parallel execution capacity","description":"Returns a single, real-time snapshot of parallel execution slot usage for an Organization — how many execution slots are currently acquired per scenario, the total slots in use, and the Organization's slot limit. Unlike the historical metrics endpoint, this reflects the live state at the moment of the request.","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the Organization to get the live execution capacity snapshot for","example":12345}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["snapshotAt","scenarioIds","slots","totalSlots","limit"],"properties":{"snapshotAt":{"type":"string","format":"date-time","description":"Timestamp at which the snapshot was taken"},"scenarioIds":{"type":"array","description":"IDs of the Scenarios that currently have slots used","items":{"type":"integer","minimum":1}},"slots":{"type":"array","description":"Number of slots currently used per Scenario, positionally aligned with scenarioIds","items":{"type":"integer","minimum":1}},"totalSlots":{"type":"integer","minimum":1,"description":"Total number of slots currently used across all Scenarios"},"limit":{"type":"integer","description":"The Organization's parallel execution slot limit"}}},"examples":{"default":{"summary":"Two Scenarios currently holding slots","value":{"snapshotAt":"2026-06-15T01:00:00.000Z","scenarioIds":[101,102],"slots":[2,1],"totalSlots":3,"limit":150}}}}}}}}},"/enums/module-types":{"get":{"tags":["Enums"],"summary":"List module types","description":"Gets the list of module types.","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"moduleTypes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}}},"example":{"moduleTypes":[{"id":2,"name":"transformer"},{"id":3,"name":"router"},{"id":5,"name":"listener"},{"id":6,"name":"feeder"},{"id":7,"name":"aggregator"},{"id":8,"name":"directive"},{"id":1,"name":"trigger"},{"id":4,"name":"action"},{"id":9,"name":"search"},{"id":10,"name":"instant"},{"id":11,"name":"responder"},{"id":12,"name":"universal"}]}}}}}}},"/enums/timezones":{"get":{"tags":["Enums"],"summary":"List timezones","description":"Gets the list of timezones and their `timezoneId` values.","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"timezones":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"offset":{"type":"string"}}}}}},"example":{"timezones":[{"id":226,"name":"(GMT-11:00) Pacific/Niue","code":"Pacific/Niue","offset":"-1100"},{"id":27,"name":"(GMT-11:00) Pacific/Pago_Pago","code":"Pacific/Pago_Pago","offset":"-1100"},{"id":328,"name":"(GMT-10:00) America/Adak","code":"America/Adak","offset":"-1000"},{"id":329,"name":"(GMT-10:00) Pacific/Honolulu","code":"Pacific/Honolulu","offset":"-1000"},{"id":101,"name":"(GMT-10:00) Pacific/Rarotonga","code":"Pacific/Rarotonga","offset":"-1000"},{"id":231,"name":"(GMT-10:00) Pacific/Tahiti","code":"Pacific/Tahiti","offset":"-1000"},{"id":232,"name":"(GMT-09:30) Pacific/Marquesas","code":"Pacific/Marquesas","offset":"-0930"},{"id":323,"name":"(GMT-09:00) America/Anchorage","code":"America/Anchorage","offset":"-0900"},{"id":324,"name":"(GMT-09:00) America/Juneau","code":"America/Juneau","offset":"-0900"},{"id":327,"name":"(GMT-09:00) America/Nome","code":"America/Nome","offset":"-0900"},{"id":325,"name":"(GMT-09:00) America/Sitka","code":"America/Sitka","offset":"-0900"},{"id":326,"name":"(GMT-09:00) America/Yakutat","code":"America/Yakutat","offset":"-0900"},{"id":233,"name":"(GMT-09:00) Pacific/Gambier","code":"Pacific/Gambier","offset":"-0900"},{"id":97,"name":"(GMT-08:00) America/Dawson","code":"America/Dawson","offset":"-0800"},{"id":321,"name":"(GMT-08:00) America/Los_Angeles","code":"America/Los_Angeles","offset":"-0800"},{"id":322,"name":"(GMT-08:00) America/Metlakatla","code":"America/Metlakatla","offset":"-0800"},{"id":212,"name":"(GMT-08:00) America/Santa_Isabel","code":"America/Santa_Isabel","offset":"-0800"},{"id":211,"name":"(GMT-08:00) America/Tijuana","code":"America/Tijuana","offset":"-0800"},{"id":95,"name":"(GMT-08:00) America/Vancouver","code":"America/Vancouver","offset":"-0800"},{"id":96,"name":"(GMT-08:00) America/Whitehorse","code":"America/Whitehorse","offset":"-0800"},{"id":240,"name":"(GMT-08:00) Pacific/Pitcairn","code":"Pacific/Pitcairn","offset":"-0800"},{"id":319,"name":"(GMT-07:00) America/Boise","code":"America/Boise","offset":"-0700"},{"id":89,"name":"(GMT-07:00) America/Cambridge_Bay","code":"America/Cambridge_Bay","offset":"-0700"},{"id":208,"name":"(GMT-07:00) America/Chihuahua","code":"America/Chihuahua","offset":"-0700"},{"id":92,"name":"(GMT-07:00) America/Creston","code":"America/Creston","offset":"-0700"},{"id":93,"name":"(GMT-07:00) America/Dawson_Creek","code":"America/Dawson_Creek","offset":"-0700"},{"id":318,"name":"(GMT-07:00) America/Denver","code":"America/Denver","offset":"-0700"},{"id":88,"name":"(GMT-07:00) America/Edmonton","code":"America/Edmonton","offset":"-0700"},{"id":94,"name":"(GMT-07:00) America/Fort_Nelson","code":"America/Fort_Nelson","offset":"-0700"},{"id":210,"name":"(GMT-07:00) America/Hermosillo","code":"America/Hermosillo","offset":"-0700"},{"id":91,"name":"(GMT-07:00) America/Inuvik","code":"America/Inuvik","offset":"-0700"},{"id":207,"name":"(GMT-07:00) America/Mazatlan","code":"America/Mazatlan","offset":"-0700"},{"id":209,"name":"(GMT-07:00) America/Ojinaga","code":"America/Ojinaga","offset":"-0700"},{"id":320,"name":"(GMT-07:00) America/Phoenix","code":"America/Phoenix","offset":"-0700"},{"id":90,"name":"(GMT-07:00) America/Yellowknife","code":"America/Yellowknife","offset":"-0700"},{"id":213,"name":"(GMT-06:00) America/Bahia_Banderas","code":"America/Bahia_Banderas","offset":"-0600"},{"id":69,"name":"(GMT-06:00) America/Belize","code":"America/Belize","offset":"-0600"},{"id":203,"name":"(GMT-06:00) America/Cancun","code":"America/Cancun","offset":"-0600"},{"id":311,"name":"(GMT-06:00) America/Chicago","code":"America/Chicago","offset":"-0600"},{"id":107,"name":"(GMT-06:00) America/Costa_Rica","code":"America/Costa_Rica","offset":"-0600"},{"id":281,"name":"(GMT-06:00) America/El_Salvador","code":"America/El_Salvador","offset":"-0600"},{"id":145,"name":"(GMT-06:00) America/Guatemala","code":"America/Guatemala","offset":"-0600"},{"id":313,"name":"(GMT-06:00) America/Indiana/Knox","code":"America/Indiana/Knox","offset":"-0600"},{"id":312,"name":"(GMT-06:00) America/Indiana/Tell_City","code":"America/Indiana/Tell_City","offset":"-0600"},{"id":221,"name":"(GMT-06:00) America/Managua","code":"America/Managua","offset":"-0600"},{"id":206,"name":"(GMT-06:00) America/Matamoros","code":"America/Matamoros","offset":"-0600"},{"id":314,"name":"(GMT-06:00) America/Menominee","code":"America/Menominee","offset":"-0600"},{"id":204,"name":"(GMT-06:00) America/Merida","code":"America/Merida","offset":"-0600"},{"id":202,"name":"(GMT-06:00) America/Mexico_City","code":"America/Mexico_City","offset":"-0600"},{"id":205,"name":"(GMT-06:00) America/Monterrey","code":"America/Monterrey","offset":"-0600"},{"id":317,"name":"(GMT-06:00) America/North_Dakota/Beulah","code":"America/North_Dakota/Beulah","offset":"-0600"},{"id":315,"name":"(GMT-06:00) America/North_Dakota/Center","code":"America/North_Dakota/Center","offset":"-0600"},{"id":316,"name":"(GMT-06:00) America/North_Dakota/New_Salem","code":"America/North_Dakota/New_Salem","offset":"-0600"},{"id":85,"name":"(GMT-06:00) America/Rainy_River","code":"America/Rainy_River","offset":"-0600"},{"id":83,"name":"(GMT-06:00) America/Rankin_Inlet","code":"America/Rankin_Inlet","offset":"-0600"},{"id":86,"name":"(GMT-06:00) America/Regina","code":"America/Regina","offset":"-0600"},{"id":81,"name":"(GMT-06:00) America/Resolute","code":"America/Resolute","offset":"-0600"},{"id":87,"name":"(GMT-06:00) America/Swift_Current","code":"America/Swift_Current","offset":"-0600"},{"id":150,"name":"(GMT-06:00) America/Tegucigalpa","code":"America/Tegucigalpa","offset":"-0600"},{"id":84,"name":"(GMT-06:00) America/Winnipeg","code":"America/Winnipeg","offset":"-0600"},{"id":103,"name":"(GMT-06:00) Pacific/Easter","code":"Pacific/Easter","offset":"-0600"},{"id":119,"name":"(GMT-06:00) Pacific/Galapagos","code":"Pacific/Galapagos","offset":"-0600"},{"id":82,"name":"(GMT-05:00) America/Atikokan","code":"America/Atikokan","offset":"-0500"},{"id":106,"name":"(GMT-05:00) America/Bogota","code":"America/Bogota","offset":"-0500"},{"id":175,"name":"(GMT-05:00) America/Cayman","code":"America/Cayman","offset":"-0500"},{"id":302,"name":"(GMT-05:00) America/Detroit","code":"America/Detroit","offset":"-0500"},{"id":64,"name":"(GMT-05:00) America/Eirunepe","code":"America/Eirunepe","offset":"-0500"},{"id":283,"name":"(GMT-05:00) America/Grand_Turk","code":"America/Grand_Turk","offset":"-0500"},{"id":118,"name":"(GMT-05:00) America/Guayaquil","code":"America/Guayaquil","offset":"-0500"},{"id":108,"name":"(GMT-05:00) America/Havana","code":"America/Havana","offset":"-0500"},{"id":305,"name":"(GMT-05:00) America/Indiana/Indianapolis","code":"America/Indiana/Indianapolis","offset":"-0500"},{"id":308,"name":"(GMT-05:00) America/Indiana/Marengo","code":"America/Indiana/Marengo","offset":"-0500"},{"id":309,"name":"(GMT-05:00) America/Indiana/Petersburg","code":"America/Indiana/Petersburg","offset":"-0500"},{"id":310,"name":"(GMT-05:00) America/Indiana/Vevay","code":"America/Indiana/Vevay","offset":"-0500"},{"id":306,"name":"(GMT-05:00) America/Indiana/Vincennes","code":"America/Indiana/Vincennes","offset":"-0500"},{"id":307,"name":"(GMT-05:00) America/Indiana/Winamac","code":"America/Indiana/Winamac","offset":"-0500"},{"id":79,"name":"(GMT-05:00) America/Iqaluit","code":"America/Iqaluit","offset":"-0500"},{"id":165,"name":"(GMT-05:00) America/Jamaica","code":"America/Jamaica","offset":"-0500"},{"id":303,"name":"(GMT-05:00) America/Kentucky/Louisville","code":"America/Kentucky/Louisville","offset":"-0500"},{"id":304,"name":"(GMT-05:00) America/Kentucky/Monticello","code":"America/Kentucky/Monticello","offset":"-0500"},{"id":230,"name":"(GMT-05:00) America/Lima","code":"America/Lima","offset":"-0500"},{"id":66,"name":"(GMT-05:00) America/Nassau","code":"America/Nassau","offset":"-0500"},{"id":301,"name":"(GMT-05:00) America/New_York","code":"America/New_York","offset":"-0500"},{"id":77,"name":"(GMT-05:00) America/Nipigon","code":"America/Nipigon","offset":"-0500"},{"id":229,"name":"(GMT-05:00) America/Panama","code":"America/Panama","offset":"-0500"},{"id":80,"name":"(GMT-05:00) America/Pangnirtung","code":"America/Pangnirtung","offset":"-0500"},{"id":151,"name":"(GMT-05:00) America/Port-au-Prince","code":"America/Port-au-Prince","offset":"-0500"},{"id":65,"name":"(GMT-05:00) America/Rio_Branco","code":"America/Rio_Branco","offset":"-0500"},{"id":78,"name":"(GMT-05:00) America/Thunder_Bay","code":"America/Thunder_Bay","offset":"-0500"},{"id":76,"name":"(GMT-05:00) America/Toronto","code":"America/Toronto","offset":"-0500"},{"id":333,"name":"(GMT-04:30) America/Caracas","code":"America/Caracas","offset":"-0430"},{"id":248,"name":"(GMT-04:00) America/Asuncion","code":"America/Asuncion","offset":"-0400"},{"id":43,"name":"(GMT-04:00) America/Barbados","code":"America/Barbados","offset":"-0400"},{"id":75,"name":"(GMT-04:00) America/Blanc-Sablon","code":"America/Blanc-Sablon","offset":"-0400"},{"id":62,"name":"(GMT-04:00) America/Boa_Vista","code":"America/Boa_Vista","offset":"-0400"},{"id":58,"name":"(GMT-04:00) America/Campo_Grande","code":"America/Campo_Grande","offset":"-0400"},{"id":59,"name":"(GMT-04:00) America/Cuiaba","code":"America/Cuiaba","offset":"-0400"},{"id":110,"name":"(GMT-04:00) America/Curacao","code":"America/Curacao","offset":"-0400"},{"id":72,"name":"(GMT-04:00) America/Glace_Bay","code":"America/Glace_Bay","offset":"-0400"},{"id":74,"name":"(GMT-04:00) America/Goose_Bay","code":"America/Goose_Bay","offset":"-0400"},{"id":148,"name":"(GMT-04:00) America/Guyana","code":"America/Guyana","offset":"-0400"},{"id":71,"name":"(GMT-04:00) America/Halifax","code":"America/Halifax","offset":"-0400"},{"id":49,"name":"(GMT-04:00) America/La_Paz","code":"America/La_Paz","offset":"-0400"},{"id":63,"name":"(GMT-04:00) America/Manaus","code":"America/Manaus","offset":"-0400"},{"id":198,"name":"(GMT-04:00) America/Martinique","code":"America/Martinique","offset":"-0400"},{"id":73,"name":"(GMT-04:00) America/Moncton","code":"America/Moncton","offset":"-0400"},{"id":294,"name":"(GMT-04:00) America/Port_of_Spain","code":"America/Port_of_Spain","offset":"-0400"},{"id":61,"name":"(GMT-04:00) America/Porto_Velho","code":"America/Porto_Velho","offset":"-0400"},{"id":241,"name":"(GMT-04:00) America/Puerto_Rico","code":"America/Puerto_Rico","offset":"-0400"},{"id":116,"name":"(GMT-04:00) America/Santo_Domingo","code":"America/Santo_Domingo","offset":"-0400"},{"id":142,"name":"(GMT-04:00) America/Thule","code":"America/Thule","offset":"-0400"},{"id":7,"name":"(GMT-04:00) Antarctica/Palmer","code":"Antarctica/Palmer","offset":"-0400"},{"id":47,"name":"(GMT-04:00) Atlantic/Bermuda","code":"Atlantic/Bermuda","offset":"-0400"},{"id":70,"name":"(GMT-03:30) America/St_Johns","code":"America/St_Johns","offset":"-0330"},{"id":54,"name":"(GMT-03:00) America/Araguaina","code":"America/Araguaina","offset":"-0300"},{"id":15,"name":"(GMT-03:00) America/Argentina/Buenos_Aires","code":"America/Argentina/Buenos_Aires","offset":"-0300"},{"id":20,"name":"(GMT-03:00) America/Argentina/Catamarca","code":"America/Argentina/Catamarca","offset":"-0300"},{"id":16,"name":"(GMT-03:00) America/Argentina/Cordoba","code":"America/Argentina/Cordoba","offset":"-0300"},{"id":18,"name":"(GMT-03:00) America/Argentina/Jujuy","code":"America/Argentina/Jujuy","offset":"-0300"},{"id":21,"name":"(GMT-03:00) America/Argentina/La_Rioja","code":"America/Argentina/La_Rioja","offset":"-0300"},{"id":23,"name":"(GMT-03:00) America/Argentina/Mendoza","code":"America/Argentina/Mendoza","offset":"-0300"},{"id":25,"name":"(GMT-03:00) America/Argentina/Rio_Gallegos","code":"America/Argentina/Rio_Gallegos","offset":"-0300"},{"id":17,"name":"(GMT-03:00) America/Argentina/Salta","code":"America/Argentina/Salta","offset":"-0300"},{"id":22,"name":"(GMT-03:00) America/Argentina/San_Juan","code":"America/Argentina/San_Juan","offset":"-0300"},{"id":24,"name":"(GMT-03:00) America/Argentina/San_Luis","code":"America/Argentina/San_Luis","offset":"-0300"},{"id":19,"name":"(GMT-03:00) America/Argentina/Tucuman","code":"America/Argentina/Tucuman","offset":"-0300"},{"id":26,"name":"(GMT-03:00) America/Argentina/Ushuaia","code":"America/Argentina/Ushuaia","offset":"-0300"},{"id":56,"name":"(GMT-03:00) America/Bahia","code":"America/Bahia","offset":"-0300"},{"id":51,"name":"(GMT-03:00) America/Belem","code":"America/Belem","offset":"-0300"},{"id":136,"name":"(GMT-03:00) America/Cayenne","code":"America/Cayenne","offset":"-0300"},{"id":52,"name":"(GMT-03:00) America/Fortaleza","code":"America/Fortaleza","offset":"-0300"},{"id":139,"name":"(GMT-03:00) America/Godthab","code":"America/Godthab","offset":"-0300"},{"id":55,"name":"(GMT-03:00) America/Maceio","code":"America/Maceio","offset":"-0300"},{"id":239,"name":"(GMT-03:00) America/Miquelon","code":"America/Miquelon","offset":"-0300"},{"id":330,"name":"(GMT-03:00) America/Montevideo","code":"America/Montevideo","offset":"-0300"},{"id":280,"name":"(GMT-03:00) America/Paramaribo","code":"America/Paramaribo","offset":"-0300"},{"id":53,"name":"(GMT-03:00) America/Recife","code":"America/Recife","offset":"-0300"},{"id":60,"name":"(GMT-03:00) America/Santarem","code":"America/Santarem","offset":"-0300"},{"id":102,"name":"(GMT-03:00) America/Santiago","code":"America/Santiago","offset":"-0300"},{"id":57,"name":"(GMT-03:00) America/Sao_Paulo","code":"America/Sao_Paulo","offset":"-0300"},{"id":6,"name":"(GMT-03:00) Antarctica/Rothera","code":"Antarctica/Rothera","offset":"-0300"},{"id":128,"name":"(GMT-03:00) Atlantic/Stanley","code":"Atlantic/Stanley","offset":"-0300"},{"id":50,"name":"(GMT-02:00) America/Noronha","code":"America/Noronha","offset":"-0200"},{"id":144,"name":"(GMT-02:00) Atlantic/South_Georgia","code":"Atlantic/South_Georgia","offset":"-0200"},{"id":141,"name":"(GMT-01:00) America/Scoresbysund","code":"America/Scoresbysund","offset":"-0100"},{"id":246,"name":"(GMT-01:00) Atlantic/Azores","code":"Atlantic/Azores","offset":"-0100"},{"id":109,"name":"(GMT-01:00) Atlantic/Cape_Verde","code":"Atlantic/Cape_Verde","offset":"-0100"},{"id":100,"name":"(GMT+00:00) Africa/Abidjan","code":"Africa/Abidjan","offset":"+0000"},{"id":137,"name":"(GMT+00:00) Africa/Accra","code":"Africa/Accra","offset":"+0000"},{"id":147,"name":"(GMT+00:00) Africa/Bissau","code":"Africa/Bissau","offset":"+0000"},{"id":188,"name":"(GMT+00:00) Africa/Casablanca","code":"Africa/Casablanca","offset":"+0000"},{"id":122,"name":"(GMT+00:00) Africa/El_Aaiun","code":"Africa/El_Aaiun","offset":"+0000"},{"id":183,"name":"(GMT+00:00) Africa/Monrovia","code":"Africa/Monrovia","offset":"+0000"},{"id":140,"name":"(GMT+00:00) America/Danmarkshavn","code":"America/Danmarkshavn","offset":"+0000"},{"id":14,"name":"(GMT+00:00) Antarctica/Troll","code":"Antarctica/Troll","offset":"+0000"},{"id":125,"name":"(GMT+00:00) Atlantic/Canary","code":"Atlantic/Canary","offset":"+0000"},{"id":132,"name":"(GMT+00:00) Atlantic/Faroe","code":"Atlantic/Faroe","offset":"+0000"},{"id":245,"name":"(GMT+00:00) Atlantic/Madeira","code":"Atlantic/Madeira","offset":"+0000"},{"id":163,"name":"(GMT+00:00) Atlantic/Reykjavik","code":"Atlantic/Reykjavik","offset":"+0000"},{"id":157,"name":"(GMT+00:00) Europe/Dublin","code":"Europe/Dublin","offset":"+0000"},{"id":244,"name":"(GMT+00:00) Europe/Lisbon","code":"Europe/Lisbon","offset":"+0000"},{"id":134,"name":"(GMT+00:00) Europe/London","code":"Europe/London","offset":"+0000"},{"id":117,"name":"(GMT+01:00) Africa/Algiers","code":"Africa/Algiers","offset":"+0100"},{"id":124,"name":"(GMT+01:00) Africa/Ceuta","code":"Africa/Ceuta","offset":"+0100"},{"id":220,"name":"(GMT+01:00) Africa/Lagos","code":"Africa/Lagos","offset":"+0100"},{"id":284,"name":"(GMT+01:00) Africa/Ndjamena","code":"Africa/Ndjamena","offset":"+0100"},{"id":291,"name":"(GMT+01:00) Africa/Tunis","code":"Africa/Tunis","offset":"+0100"},{"id":217,"name":"(GMT+01:00) Africa/Windhoek","code":"Africa/Windhoek","offset":"+0100"},{"id":222,"name":"(GMT+01:00) Europe/Amsterdam","code":"Europe/Amsterdam","offset":"+0100"},{"id":1,"name":"(GMT+01:00) Europe/Andorra","code":"Europe/Andorra","offset":"+0100"},{"id":252,"name":"(GMT+01:00) Europe/Belgrade","code":"Europe/Belgrade","offset":"+0100"},{"id":114,"name":"(GMT+01:00) Europe/Berlin","code":"Europe/Berlin","offset":"+0100"},{"id":45,"name":"(GMT+01:00) Europe/Brussels","code":"Europe/Brussels","offset":"+0100"},{"id":152,"name":"(GMT+01:00) Europe/Budapest","code":"Europe/Budapest","offset":"+0100"},{"id":115,"name":"(GMT+01:00) Europe/Copenhagen","code":"Europe/Copenhagen","offset":"+0100"},{"id":138,"name":"(GMT+01:00) Europe/Gibraltar","code":"Europe/Gibraltar","offset":"+0100"},{"id":185,"name":"(GMT+01:00) Europe/Luxembourg","code":"Europe/Luxembourg","offset":"+0100"},{"id":123,"name":"(GMT+01:00) Europe/Madrid","code":"Europe/Madrid","offset":"+0100"},{"id":199,"name":"(GMT+01:00) Europe/Malta","code":"Europe/Malta","offset":"+0100"},{"id":189,"name":"(GMT+01:00) Europe/Monaco","code":"Europe/Monaco","offset":"+0100"},{"id":223,"name":"(GMT+01:00) Europe/Oslo","code":"Europe/Oslo","offset":"+0100"},{"id":133,"name":"(GMT+01:00) Europe/Paris","code":"Europe/Paris","offset":"+0100"},{"id":113,"name":"(GMT+01:00) Europe/Prague","code":"Europe/Prague","offset":"+0100"},{"id":164,"name":"(GMT+01:00) Europe/Rome","code":"Europe/Rome","offset":"+0100"},{"id":278,"name":"(GMT+01:00) Europe/Stockholm","code":"Europe/Stockholm","offset":"+0100"},{"id":4,"name":"(GMT+01:00) Europe/Tirane","code":"Europe/Tirane","offset":"+0100"},{"id":28,"name":"(GMT+01:00) Europe/Vienna","code":"Europe/Vienna","offset":"+0100"},{"id":238,"name":"(GMT+01:00) Europe/Warsaw","code":"Europe/Warsaw","offset":"+0100"},{"id":99,"name":"(GMT+01:00) Europe/Zurich","code":"Europe/Zurich","offset":"+0100"},{"id":121,"name":"(GMT+02:00) Africa/Cairo","code":"Africa/Cairo","offset":"+0200"},{"id":338,"name":"(GMT+02:00) Africa/Johannesburg","code":"Africa/Johannesburg","offset":"+0200"},{"id":216,"name":"(GMT+02:00) Africa/Maputo","code":"Africa/Maputo","offset":"+0200"},{"id":187,"name":"(GMT+02:00) Africa/Tripoli","code":"Africa/Tripoli","offset":"+0200"},{"id":166,"name":"(GMT+02:00) Asia/Amman","code":"Asia/Amman","offset":"+0200"},{"id":181,"name":"(GMT+02:00) Asia/Beirut","code":"Asia/Beirut","offset":"+0200"},{"id":282,"name":"(GMT+02:00) Asia/Damascus","code":"Asia/Damascus","offset":"+0200"},{"id":242,"name":"(GMT+02:00) Asia/Gaza","code":"Asia/Gaza","offset":"+0200"},{"id":243,"name":"(GMT+02:00) Asia/Hebron","code":"Asia/Hebron","offset":"+0200"},{"id":158,"name":"(GMT+02:00) Asia/Jerusalem","code":"Asia/Jerusalem","offset":"+0200"},{"id":112,"name":"(GMT+02:00) Asia/Nicosia","code":"Asia/Nicosia","offset":"+0200"},{"id":143,"name":"(GMT+02:00) Europe/Athens","code":"Europe/Athens","offset":"+0200"},{"id":251,"name":"(GMT+02:00) Europe/Bucharest","code":"Europe/Bucharest","offset":"+0200"},{"id":190,"name":"(GMT+02:00) Europe/Chisinau","code":"Europe/Chisinau","offset":"+0200"},{"id":126,"name":"(GMT+02:00) Europe/Helsinki","code":"Europe/Helsinki","offset":"+0200"},{"id":293,"name":"(GMT+02:00) Europe/Istanbul","code":"Europe/Istanbul","offset":"+0200"},{"id":253,"name":"(GMT+02:00) Europe/Kaliningrad","code":"Europe/Kaliningrad","offset":"+0200"},{"id":297,"name":"(GMT+02:00) Europe/Kyiv","code":"Europe/Kyiv","offset":"+0200"},{"id":186,"name":"(GMT+02:00) Europe/Riga","code":"Europe/Riga","offset":"+0200"},{"id":46,"name":"(GMT+02:00) Europe/Sofia","code":"Europe/Sofia","offset":"+0200"},{"id":120,"name":"(GMT+02:00) Europe/Tallinn","code":"Europe/Tallinn","offset":"+0200"},{"id":298,"name":"(GMT+02:00) Europe/Uzhgorod","code":"Europe/Uzhgorod","offset":"+0200"},{"id":184,"name":"(GMT+02:00) Europe/Vilnius","code":"Europe/Vilnius","offset":"+0200"},{"id":299,"name":"(GMT+02:00) Europe/Zaporozhye","code":"Europe/Zaporozhye","offset":"+0200"},{"id":277,"name":"(GMT+03:00) Africa/Khartoum","code":"Africa/Khartoum","offset":"+0300"},{"id":168,"name":"(GMT+03:00) Africa/Nairobi","code":"Africa/Nairobi","offset":"+0300"},{"id":13,"name":"(GMT+03:00) Antarctica/Syowa","code":"Antarctica/Syowa","offset":"+0300"},{"id":161,"name":"(GMT+03:00) Asia/Baghdad","code":"Asia/Baghdad","offset":"+0300"},{"id":249,"name":"(GMT+03:00) Asia/Qatar","code":"Asia/Qatar","offset":"+0300"},{"id":274,"name":"(GMT+03:00) Asia/Riyadh","code":"Asia/Riyadh","offset":"+0300"},{"id":68,"name":"(GMT+03:00) Europe/Minsk","code":"Europe/Minsk","offset":"+0300"},{"id":254,"name":"(GMT+03:00) Europe/Moscow","code":"Europe/Moscow","offset":"+0300"},{"id":255,"name":"(GMT+03:00) Europe/Simferopol","code":"Europe/Simferopol","offset":"+0300"},{"id":256,"name":"(GMT+03:00) Europe/Volgograd","code":"Europe/Volgograd","offset":"+0300"},{"id":162,"name":"(GMT+03:30) Asia/Tehran","code":"Asia/Tehran","offset":"+0330"},{"id":42,"name":"(GMT+04:00) Asia/Baku","code":"Asia/Baku","offset":"+0400"},{"id":2,"name":"(GMT+04:00) Asia/Dubai","code":"Asia/Dubai","offset":"+0400"},{"id":135,"name":"(GMT+04:00) Asia/Tbilisi","code":"Asia/Tbilisi","offset":"+0400"},{"id":5,"name":"(GMT+04:00) Asia/Yerevan","code":"Asia/Yerevan","offset":"+0400"},{"id":257,"name":"(GMT+04:00) Europe/Samara","code":"Europe/Samara","offset":"+0400"},{"id":276,"name":"(GMT+04:00) Indian/Mahe","code":"Indian/Mahe","offset":"+0400"},{"id":200,"name":"(GMT+04:00) Indian/Mauritius","code":"Indian/Mauritius","offset":"+0400"},{"id":250,"name":"(GMT+04:00) Indian/Reunion","code":"Indian/Reunion","offset":"+0400"},{"id":3,"name":"(GMT+04:30) Asia/Kabul","code":"Asia/Kabul","offset":"+0430"},{"id":9,"name":"(GMT+05:00) Antarctica/Davis","code":"Antarctica/Davis","offset":"+0500"},{"id":8,"name":"(GMT+05:00) Antarctica/Mawson","code":"Antarctica/Mawson","offset":"+0500"},{"id":179,"name":"(GMT+05:00) Asia/Aqtau","code":"Asia/Aqtau","offset":"+0500"},{"id":178,"name":"(GMT+05:00) Asia/Aqtobe","code":"Asia/Aqtobe","offset":"+0500"},{"id":290,"name":"(GMT+05:00) Asia/Ashgabat","code":"Asia/Ashgabat","offset":"+0500"},{"id":287,"name":"(GMT+05:00) Asia/Dushanbe","code":"Asia/Dushanbe","offset":"+0500"},{"id":237,"name":"(GMT+05:00) Asia/Karachi","code":"Asia/Karachi","offset":"+0500"},{"id":180,"name":"(GMT+05:00) Asia/Oral","code":"Asia/Oral","offset":"+0500"},{"id":331,"name":"(GMT+05:00) Asia/Samarkand","code":"Asia/Samarkand","offset":"+0500"},{"id":332,"name":"(GMT+05:00) Asia/Tashkent","code":"Asia/Tashkent","offset":"+0500"},{"id":258,"name":"(GMT+05:00) Asia/Yekaterinburg","code":"Asia/Yekaterinburg","offset":"+0500"},{"id":285,"name":"(GMT+05:00) Indian/Kerguelen","code":"Indian/Kerguelen","offset":"+0500"},{"id":201,"name":"(GMT+05:00) Indian/Maldives","code":"Indian/Maldives","offset":"+0500"},{"id":182,"name":"(GMT+05:30) Asia/Colombo","code":"Asia/Colombo","offset":"+0530"},{"id":159,"name":"(GMT+05:30) Asia/Kolkata","code":"Asia/Kolkata","offset":"+0530"},{"id":224,"name":"(GMT+05:45) Asia/Kathmandu","code":"Asia/Kathmandu","offset":"+0545"},{"id":11,"name":"(GMT+06:00) Antarctica/Vostok","code":"Antarctica/Vostok","offset":"+0600"},{"id":176,"name":"(GMT+06:00) Asia/Almaty","code":"Asia/Almaty","offset":"+0600"},{"id":169,"name":"(GMT+06:00) Asia/Bishkek","code":"Asia/Bishkek","offset":"+0600"},{"id":44,"name":"(GMT+06:00) Asia/Dhaka","code":"Asia/Dhaka","offset":"+0600"},{"id":260,"name":"(GMT+06:00) Asia/Novosibirsk","code":"Asia/Novosibirsk","offset":"+0600"},{"id":259,"name":"(GMT+06:00) Asia/Omsk","code":"Asia/Omsk","offset":"+0600"},{"id":177,"name":"(GMT+06:00) Asia/Qyzylorda","code":"Asia/Qyzylorda","offset":"+0600"},{"id":67,"name":"(GMT+06:00) Asia/Thimphu","code":"Asia/Thimphu","offset":"+0600"},{"id":160,"name":"(GMT+06:00) Indian/Chagos","code":"Indian/Chagos","offset":"+0600"},{"id":193,"name":"(GMT+06:30) Asia/Rangoon","code":"Asia/Rangoon","offset":"+0630"},{"id":98,"name":"(GMT+06:30) Indian/Cocos","code":"Indian/Cocos","offset":"+0630"},{"id":286,"name":"(GMT+07:00) Asia/Bangkok","code":"Asia/Bangkok","offset":"+0700"},{"id":334,"name":"(GMT+07:00) Asia/Ho_Chi_Minh","code":"Asia/Ho_Chi_Minh","offset":"+0700"},{"id":195,"name":"(GMT+07:00) Asia/Hovd","code":"Asia/Hovd","offset":"+0700"},{"id":153,"name":"(GMT+07:00) Asia/Jakarta","code":"Asia/Jakarta","offset":"+0700"},{"id":262,"name":"(GMT+07:00) Asia/Krasnoyarsk","code":"Asia/Krasnoyarsk","offset":"+0700"},{"id":261,"name":"(GMT+07:00) Asia/Novokuznetsk","code":"Asia/Novokuznetsk","offset":"+0700"},{"id":154,"name":"(GMT+07:00) Asia/Pontianak","code":"Asia/Pontianak","offset":"+0700"},{"id":111,"name":"(GMT+07:00) Indian/Christmas","code":"Indian/Christmas","offset":"+0700"},{"id":48,"name":"(GMT+08:00) Asia/Brunei","code":"Asia/Brunei","offset":800},{"id":264,"name":"(GMT+08:00) Asia/Chita","code":"Asia/Chita","offset":800},{"id":196,"name":"(GMT+08:00) Asia/Choibalsan","code":"Asia/Choibalsan","offset":800},{"id":149,"name":"(GMT+08:00) Asia/Hong_Kong","code":"Asia/Hong_Kong","offset":800},{"id":263,"name":"(GMT+08:00) Asia/Irkutsk","code":"Asia/Irkutsk","offset":800},{"id":214,"name":"(GMT+08:00) Asia/Kuala_Lumpur","code":"Asia/Kuala_Lumpur","offset":800},{"id":215,"name":"(GMT+08:00) Asia/Kuching","code":"Asia/Kuching","offset":800},{"id":197,"name":"(GMT+08:00) Asia/Macau","code":"Asia/Macau","offset":800},{"id":155,"name":"(GMT+08:00) Asia/Makassar","code":"Asia/Makassar","offset":800},{"id":236,"name":"(GMT+08:00) Asia/Manila","code":"Asia/Manila","offset":800},{"id":104,"name":"(GMT+08:00) Asia/Shanghai","code":"Asia/Shanghai","offset":800},{"id":279,"name":"(GMT+08:00) Asia/Singapore","code":"Asia/Singapore","offset":800},{"id":296,"name":"(GMT+08:00) Asia/Taipei","code":"Asia/Taipei","offset":800},{"id":194,"name":"(GMT+08:00) Asia/Ulaanbaatar","code":"Asia/Ulaanbaatar","offset":800},{"id":105,"name":"(GMT+08:00) Asia/Urumqi","code":"Asia/Urumqi","offset":800},{"id":40,"name":"(GMT+08:00) Australia/Perth","code":"Australia/Perth","offset":800},{"id":173,"name":"(GMT+08:30) Asia/Pyongyang","code":"Asia/Pyongyang","offset":830},{"id":41,"name":"(GMT+08:45) Australia/Eucla","code":"Australia/Eucla","offset":845},{"id":289,"name":"(GMT+09:00) Asia/Dili","code":"Asia/Dili","offset":900},{"id":156,"name":"(GMT+09:00) Asia/Jayapura","code":"Asia/Jayapura","offset":900},{"id":266,"name":"(GMT+09:00) Asia/Khandyga","code":"Asia/Khandyga","offset":900},{"id":174,"name":"(GMT+09:00) Asia/Seoul","code":"Asia/Seoul","offset":900},{"id":167,"name":"(GMT+09:00) Asia/Tokyo","code":"Asia/Tokyo","offset":900},{"id":265,"name":"(GMT+09:00) Asia/Yakutsk","code":"Asia/Yakutsk","offset":900},{"id":247,"name":"(GMT+09:00) Pacific/Palau","code":"Pacific/Palau","offset":900},{"id":38,"name":"(GMT+09:30) Australia/Adelaide","code":"Australia/Adelaide","offset":930},{"id":35,"name":"(GMT+09:30) Australia/Broken_Hill","code":"Australia/Broken_Hill","offset":930},{"id":39,"name":"(GMT+09:30) Australia/Darwin","code":"Australia/Darwin","offset":930},{"id":12,"name":"(GMT+10:00) Antarctica/DumontDUrville","code":"Antarctica/DumontDUrville","offset":"+1000"},{"id":270,"name":"(GMT+10:00) Asia/Magadan","code":"Asia/Magadan","offset":"+1000"},{"id":269,"name":"(GMT+10:00) Asia/Ust-Nera","code":"Asia/Ust-Nera","offset":"+1000"},{"id":267,"name":"(GMT+10:00) Asia/Vladivostok","code":"Asia/Vladivostok","offset":"+1000"},{"id":36,"name":"(GMT+10:00) Australia/Brisbane","code":"Australia/Brisbane","offset":"+1000"},{"id":32,"name":"(GMT+10:00) Australia/Currie","code":"Australia/Currie","offset":"+1000"},{"id":31,"name":"(GMT+10:00) Australia/Hobart","code":"Australia/Hobart","offset":"+1000"},{"id":37,"name":"(GMT+10:00) Australia/Lindeman","code":"Australia/Lindeman","offset":"+1000"},{"id":33,"name":"(GMT+10:00) Australia/Melbourne","code":"Australia/Melbourne","offset":"+1000"},{"id":34,"name":"(GMT+10:00) Australia/Sydney","code":"Australia/Sydney","offset":"+1000"},{"id":129,"name":"(GMT+10:00) Pacific/Chuuk","code":"Pacific/Chuuk","offset":"+1000"},{"id":146,"name":"(GMT+10:00) Pacific/Guam","code":"Pacific/Guam","offset":"+1000"},{"id":234,"name":"(GMT+10:00) Pacific/Port_Moresby","code":"Pacific/Port_Moresby","offset":"+1000"},{"id":29,"name":"(GMT+10:30) Australia/Lord_Howe","code":"Australia/Lord_Howe","offset":"+1030"},{"id":10,"name":"(GMT+11:00) Antarctica/Casey","code":"Antarctica/Casey","offset":"+1100"},{"id":30,"name":"(GMT+11:00) Antarctica/Macquarie","code":"Antarctica/Macquarie","offset":"+1100"},{"id":268,"name":"(GMT+11:00) Asia/Sakhalin","code":"Asia/Sakhalin","offset":"+1100"},{"id":271,"name":"(GMT+11:00) Asia/Srednekolymsk","code":"Asia/Srednekolymsk","offset":"+1100"},{"id":235,"name":"(GMT+11:00) Pacific/Bougainville","code":"Pacific/Bougainville","offset":"+1100"},{"id":335,"name":"(GMT+11:00) Pacific/Efate","code":"Pacific/Efate","offset":"+1100"},{"id":275,"name":"(GMT+11:00) Pacific/Guadalcanal","code":"Pacific/Guadalcanal","offset":"+1100"},{"id":131,"name":"(GMT+11:00) Pacific/Kosrae","code":"Pacific/Kosrae","offset":"+1100"},{"id":218,"name":"(GMT+11:00) Pacific/Noumea","code":"Pacific/Noumea","offset":"+1100"},{"id":130,"name":"(GMT+11:00) Pacific/Pohnpei","code":"Pacific/Pohnpei","offset":"+1100"},{"id":219,"name":"(GMT+11:30) Pacific/Norfolk","code":"Pacific/Norfolk","offset":"+1130"},{"id":273,"name":"(GMT+12:00) Asia/Anadyr","code":"Asia/Anadyr","offset":"+1200"},{"id":272,"name":"(GMT+12:00) Asia/Kamchatka","code":"Asia/Kamchatka","offset":"+1200"},{"id":227,"name":"(GMT+12:00) Pacific/Auckland","code":"Pacific/Auckland","offset":"+1200"},{"id":127,"name":"(GMT+12:00) Pacific/Fiji","code":"Pacific/Fiji","offset":"+1200"},{"id":295,"name":"(GMT+12:00) Pacific/Funafuti","code":"Pacific/Funafuti","offset":"+1200"},{"id":192,"name":"(GMT+12:00) Pacific/Kwajalein","code":"Pacific/Kwajalein","offset":"+1200"},{"id":191,"name":"(GMT+12:00) Pacific/Majuro","code":"Pacific/Majuro","offset":"+1200"},{"id":225,"name":"(GMT+12:00) Pacific/Nauru","code":"Pacific/Nauru","offset":"+1200"},{"id":170,"name":"(GMT+12:00) Pacific/Tarawa","code":"Pacific/Tarawa","offset":"+1200"},{"id":300,"name":"(GMT+12:00) Pacific/Wake","code":"Pacific/Wake","offset":"+1200"},{"id":336,"name":"(GMT+12:00) Pacific/Wallis","code":"Pacific/Wallis","offset":"+1200"},{"id":228,"name":"(GMT+12:45) Pacific/Chatham","code":"Pacific/Chatham","offset":"+1245"},{"id":337,"name":"(GMT+13:00) Pacific/Apia","code":"Pacific/Apia","offset":"+1300"},{"id":171,"name":"(GMT+13:00) Pacific/Enderbury","code":"Pacific/Enderbury","offset":"+1300"},{"id":288,"name":"(GMT+13:00) Pacific/Fakaofo","code":"Pacific/Fakaofo","offset":"+1300"},{"id":292,"name":"(GMT+13:00) Pacific/Tongatapu","code":"Pacific/Tongatapu","offset":"+1300"},{"id":172,"name":"(GMT+14:00) Pacific/Kiritimati","code":"Pacific/Kiritimati","offset":"+1400"}]}}}}}}},"/enums/countries":{"get":{"tags":["Enums"],"summary":"List countries","description":"Gets the list of countries and their `countryId` values in the `id` column. The `countryId` is a required parameter when you create a new organization with the API call `POST /organizations`.","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"countries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"code2":{"type":"string"},"stripeRegion":{"type":"string"}}}}}},"example":{"countries":[{"id":4,"name":"Afghanistan","code":"AFG","code2":"af","stripeRegion":"eu"},{"id":5,"name":"Åland Islands","code":"ALA","code2":"ax","stripeRegion":"eu"},{"id":6,"name":"Albania","code":"ALB","code2":"al","stripeRegion":"eu"}]}}}}}}},"/enums/us-states":{"get":{"tags":["Enums"],"summary":"List US states","description":"Gets the list of US states and their `id` values along with the two-letter state `code`.","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"usStates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"}}}}}},"example":{"usStates":[{"id":1,"name":"Alabama","code":"AL"},{"id":2,"name":"Alaska","code":"AK"},{"id":5,"name":"California","code":"CA"}]}}}}}}},"/enums/locales":{"get":{"tags":["Enums"],"summary":"List locales","description":"Gets the list of locales and their `localeId` values and locale codes.","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"locales":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"angularCode":{"type":"string"}}}}}},"example":{"locales":[{"id":1,"name":"Afrikaans","code":"af","angularCode":"af"},{"id":96,"name":"Albanian","code":"sq","angularCode":"sq"},{"id":8,"name":"Arabic","code":"ar","angularCode":"ar"},{"id":2,"name":"Arabic (Algeria)","code":"ar-dz","angularCode":"ar-DZ"},{"id":3,"name":"Arabic (Kuwait)","code":"ar-kw","angularCode":"ar-KW"},{"id":4,"name":"Arabic (Libya)","code":"ar-ly","angularCode":"ar-LY"},{"id":5,"name":"Arabic (Morocco)","code":"ar-ma","angularCode":"ar-MA"},{"id":6,"name":"Arabic (Saudi Arabia)","code":"ar-sa","angularCode":"ar-SA"},{"id":7,"name":"Arabic (Tunisia)","code":"ar-tn","angularCode":"ar-TN"},{"id":54,"name":"Armenian (Armenia)","code":"hy-am","angularCode":"hy"},{"id":9,"name":"Azerbaijani","code":"az","angularCode":"az"},{"id":12,"name":"Bambara","code":"bm","angularCode":"bm"},{"id":38,"name":"Basque","code":"eu","angularCode":"eu"},{"id":10,"name":"Belarusian","code":"be","angularCode":"be"},{"id":13,"name":"Bengali","code":"bn","angularCode":"bn"},{"id":16,"name":"Bosnian","code":"bs","angularCode":"bs"},{"id":11,"name":"Bulgarian","code":"bg","angularCode":"bg"},{"id":79,"name":"Burmese","code":"my","angularCode":"my"},{"id":17,"name":"Catalan","code":"ca","angularCode":"ca"},{"id":112,"name":"Central Morocco Tamazight","code":"tzm","angularCode":"tzm"},{"id":111,"name":"Central Morocco Tamazight (Latin)","code":"tzm-latn","angularCode":"tzm"},{"id":121,"name":"Chinese - China","code":"zh-cn","angularCode":"zh-Hans"},{"id":122,"name":"Chinese - Hong Kong SAR","code":"zh-hk","angularCode":"zh-Hant-HK"},{"id":123,"name":"Chinese - Taiwan","code":"zh-tw","angularCode":"zh-Hant"},{"id":52,"name":"Croatian","code":"hr","angularCode":"hr"},{"id":18,"name":"Czech","code":"cs","angularCode":"cs"},{"id":21,"name":"Danish","code":"da","angularCode":"da"},{"id":25,"name":"Divehi","code":"dv","angularCode":"en-US"},{"id":83,"name":"Dutch","code":"nl","angularCode":"nl"},{"id":82,"name":"Dutch (Belgium)","code":"nl-be","angularCode":"nl-BE"},{"id":27,"name":"English (Australia)","code":"en-au","angularCode":"en-AU"},{"id":28,"name":"English (Canada)","code":"en-ca","angularCode":"en-CA"},{"id":30,"name":"English (Ireland)","code":"en-ie","angularCode":"en-IE"},{"id":32,"name":"English (New Zealand)","code":"en-nz","angularCode":"en-NZ"},{"id":29,"name":"English (United Kingdom)","code":"en-gb","angularCode":"en-GB"},{"id":19,"name":"English (United States)","code":"en-us","angularCode":"en-US"},{"id":33,"name":"Esperanto","code":"eo","angularCode":"eo"},{"id":37,"name":"Estonian","code":"et","angularCode":"et"},{"id":41,"name":"Faroese","code":"fo","angularCode":"fo"},{"id":40,"name":"Finnish","code":"fi","angularCode":"fi"},{"id":44,"name":"French","code":"fr","angularCode":"fr"},{"id":42,"name":"French (Canada)","code":"fr-ca","angularCode":"fr-CA"},{"id":43,"name":"French (Switzerland)","code":"fr-ch","angularCode":"fr-CH"},{"id":46,"name":"Gaelic","code":"gd","angularCode":"gd"},{"id":47,"name":"Galician","code":"gl","angularCode":"gl"},{"id":60,"name":"Georgian","code":"ka","angularCode":"ka"},{"id":24,"name":"German","code":"de","angularCode":"de"},{"id":22,"name":"German (Austria)","code":"de-at","angularCode":"de-AT"},{"id":23,"name":"German (Switzerland)","code":"de-ch","angularCode":"de-CH"},{"id":26,"name":"Greek","code":"el","angularCode":"el"},{"id":49,"name":"Gujarati","code":"gu","angularCode":"gu"},{"id":50,"name":"Hebrew","code":"he","angularCode":"he"},{"id":51,"name":"Hindi","code":"hi","angularCode":"hi"},{"id":53,"name":"Hungarian","code":"hu","angularCode":"hu"},{"id":56,"name":"Icelandic","code":"is","angularCode":"is"},{"id":55,"name":"Indonesian","code":"id","angularCode":"id"},{"id":57,"name":"Italian","code":"it","angularCode":"it"},{"id":58,"name":"Japanese","code":"ja","angularCode":"ja"},{"id":63,"name":"Kannada","code":"kn","angularCode":"kn"},{"id":61,"name":"Kazakh","code":"kk","angularCode":"kk"},{"id":62,"name":"Khmer","code":"km","angularCode":"km"},{"id":64,"name":"Korean","code":"ko","angularCode":"ko"},{"id":67,"name":"Lao","code":"lo","angularCode":"lo"},{"id":69,"name":"Latvian","code":"lv","angularCode":"lv"},{"id":68,"name":"Lithuanian","code":"lt","angularCode":"lt"},{"id":72,"name":"Macedonian","code":"mk","angularCode":"mk"},{"id":77,"name":"Malay","code":"ms","angularCode":"ms"},{"id":73,"name":"Malayalam","code":"ml","angularCode":"ml"},{"id":76,"name":"Malay (Malaysia)","code":"ms-my","angularCode":"ms"},{"id":78,"name":"Maltese","code":"mt","angularCode":"mt"},{"id":75,"name":"Marathi","code":"mr","angularCode":"mr"},{"id":71,"name":"Maroi","code":"mi","angularCode":"mi"},{"id":74,"name":"Mongolian","code":"mn","angularCode":"mn"},{"id":81,"name":"Nepali","code":"ne","angularCode":"ne"},{"id":80,"name":"Norwegian Bokmål","code":"nb","angularCode":"nb"},{"id":84,"name":"Norwegian Nynorsk","code":"nn","angularCode":"nn"},{"id":39,"name":"Persian","code":"fa","angularCode":"fa"},{"id":86,"name":"Polish","code":"pl","angularCode":"pl"},{"id":88,"name":"Portuguese","code":"pt","angularCode":"pt"},{"id":87,"name":"Portuguese (Brazil)","code":"pt-br","angularCode":"pt"},{"id":85,"name":"Punjabi","code":"pa","angularCode":"pa"},{"id":89,"name":"Romanian","code":"ro","angularCode":"ro"},{"id":90,"name":"Russian","code":"ru","angularCode":"ru"},{"id":98,"name":"Serbian","code":"sr","angularCode":"sr"},{"id":97,"name":"Serbian (Cyrillic)","code":"sr-cyrl","angularCode":"sr-Cyrl"},{"id":91,"name":"Sindhi","code":"sd","angularCode":"sd"},{"id":93,"name":"Sinhala","code":"si","angularCode":"si"},{"id":94,"name":"Slovak","code":"sk","angularCode":"sk"},{"id":95,"name":"Slovenian","code":"sl","angularCode":"sl"},{"id":36,"name":"Spanish","code":"es","angularCode":"es"},{"id":34,"name":"Spanish (Dominican Republic)","code":"es-do","angularCode":"es-DO"},{"id":35,"name":"Spanish (United States)","code":"es-us","angularCode":"es-US"},{"id":101,"name":"Swahili","code":"sw","angularCode":"sw"},{"id":100,"name":"Swedish","code":"sv","angularCode":"sv"},{"id":105,"name":"Tajik","code":"tg","angularCode":"tg"},{"id":102,"name":"Tamil","code":"ta","angularCode":"ta"},{"id":103,"name":"Telugu","code":"te","angularCode":"te"},{"id":106,"name":"Thai","code":"th","angularCode":"th"},{"id":14,"name":"Tibetan","code":"bo","angularCode":"bo"},{"id":109,"name":"Turkish","code":"tr","angularCode":"tr"},{"id":114,"name":"Ukrainian","code":"uk","angularCode":"uk"},{"id":115,"name":"Urdu","code":"ur","angularCode":"ur"},{"id":117,"name":"Uzbek","code":"uz","angularCode":"uz"},{"id":116,"name":"Uzbek (Latin)","code":"uz-latn","angularCode":"uz-Latn"},{"id":118,"name":"Vietnamese","code":"vi","angularCode":"vi"},{"id":20,"name":"Welsh","code":"cy","angularCode":"cy"},{"id":120,"name":"Yoruba","code":"yo","angularCode":"yo"}]}}}}}}},"/enums/languages":{"get":{"tags":["Enums"],"summary":"List languages","description":"Gets the list of languages and their language codes.","parameters":[{"name":"localized","in":"query","schema":{"type":"boolean"},"example":"true","description":"When set to true, the response contains localized language names, for example --  German: Deutch or Czech: Čeština. This setting limits the number of returned languages to those that have defined their localized name. The default value is `false`."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"languages":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}}}}},"example":{"languages":[{"code":"ab","name":"Abkhazian"},{"code":"aa","name":"Afar"},{"code":"af","name":"Afrikaans"},{"code":"ak","name":"Akan"},{"code":"sq","name":"Albanian"},{"code":"am","name":"Amharic"},{"code":"ar","name":"Arabic"},{"code":"an","name":"Aragonese"},{"code":"hy","name":"Armenian"},{"code":"as","name":"Assamese"},{"code":"av","name":"Avaric"},{"code":"ae","name":"Avestan"},{"code":"ay","name":"Aymara"},{"code":"az","name":"Azerbaijani"},{"code":"bm","name":"Bambara"},{"code":"ba","name":"Bashkir"},{"code":"eu","name":"Basque"},{"code":"be","name":"Belarusian"},{"code":"bn","name":"Bengali"},{"code":"bh","name":"Bihari languages"},{"code":"bi","name":"Bislama"},{"code":"nb","name":"Bokmål, Norwegian; Norwegian Bokmål"},{"code":"bs","name":"Bosnian"},{"code":"br","name":"Breton"},{"code":"bg","name":"Bulgarian"},{"code":"my","name":"Burmese"},{"code":"ca","name":"Catalan; Valencian"},{"code":"km","name":"Central Khmer"},{"code":"ch","name":"Chamorro"},{"code":"ce","name":"Chechen"},{"code":"ny","name":"Chichewa; Chewa; Nyanja"},{"code":"zh","name":"Chinese"},{"code":"cu","name":"Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic"},{"code":"cv","name":"Chuvash"},{"code":"kw","name":"Cornish"},{"code":"co","name":"Corsican"},{"code":"cr","name":"Cree"},{"code":"hr","name":"Croatian"},{"code":"cs","name":"Czech"},{"code":"da","name":"Danish"},{"code":"dv","name":"Divehi; Dhivehi; Maldivian"},{"code":"nl","name":"Dutch; Flemish"},{"code":"dz","name":"Dzongkha"},{"code":"en","name":"English"},{"code":"eo","name":"Esperanto"},{"code":"et","name":"Estonian"},{"code":"ee","name":"Ewe"},{"code":"fo","name":"Faroese"},{"code":"fj","name":"Fijian"},{"code":"fi","name":"Finnish"},{"code":"fr","name":"French"},{"code":"ff","name":"Fulah"},{"code":"gd","name":"Gaelic; Scottish Gaelic"},{"code":"gl","name":"Galician"},{"code":"lg","name":"Ganda"},{"code":"ka","name":"Georgian"},{"code":"de","name":"German"},{"code":"el","name":"Greek, Modern (1453-)"},{"code":"gn","name":"Guarani"},{"code":"gu","name":"Gujarati"},{"code":"ht","name":"Haitian; Haitian Creole"},{"code":"ha","name":"Hausa"},{"code":"he","name":"Hebrew"},{"code":"hz","name":"Herero"},{"code":"hi","name":"Hindi"},{"code":"ho","name":"Hiri Motu"},{"code":"hu","name":"Hungarian"},{"code":"is","name":"Icelandic"},{"code":"io","name":"Ido"},{"code":"ig","name":"Igbo"},{"code":"id","name":"Indonesian"},{"code":"ia","name":"Interlingua (International Auxiliary Language Association)"},{"code":"ie","name":"Interlingue; Occidental"},{"code":"iu","name":"Inuktitut"},{"code":"ik","name":"Inupiaq"},{"code":"ga","name":"Irish"},{"code":"it","name":"Italian"},{"code":"ja","name":"Japanese"},{"code":"jv","name":"Javanese"},{"code":"kl","name":"Kalaallisut; Greenlandic"},{"code":"kn","name":"Kannada"},{"code":"kr","name":"Kanuri"},{"code":"ks","name":"Kashmiri"},{"code":"kk","name":"Kazakh"},{"code":"ki","name":"Kikuyu; Gikuyu"},{"code":"rw","name":"Kinyarwanda"},{"code":"ky","name":"Kirghiz; Kyrgyz"},{"code":"kv","name":"Komi"},{"code":"kg","name":"Kongo"},{"code":"ko","name":"Korean"},{"code":"kj","name":"Kuanyama; Kwanyama"},{"code":"ku","name":"Kurdish"},{"code":"lo","name":"Lao"},{"code":"la","name":"Latin"},{"code":"lv","name":"Latvian"},{"code":"li","name":"Limburgan; Limburger; Limburgish"},{"code":"ln","name":"Lingala"},{"code":"lt","name":"Lithuanian"},{"code":"lu","name":"Luba-Katanga"},{"code":"lb","name":"Luxembourgish; Letzeburgesch"},{"code":"mk","name":"Macedonian"},{"code":"mg","name":"Malagasy"},{"code":"ms","name":"Malay"},{"code":"ml","name":"Malayalam"},{"code":"mt","name":"Maltese"},{"code":"gv","name":"Manx"},{"code":"mi","name":"Maori"},{"code":"mr","name":"Marathi"},{"code":"mh","name":"Marshallese"},{"code":"mn","name":"Mongolian"},{"code":"na","name":"Nauru"},{"code":"nv","name":"Navajo; Navaho"},{"code":"nd","name":"Ndebele, North; North Ndebele"},{"code":"nr","name":"Ndebele, South; South Ndebele"},{"code":"ng","name":"Ndonga"},{"code":"ne","name":"Nepali"},{"code":"se","name":"Northern Sami"},{"code":"no","name":"Norwegian"},{"code":"nn","name":"Norwegian Nynorsk; Nynorsk, Norwegian"},{"code":"oc","name":"Occitan (post 1500); Provençal"},{"code":"oj","name":"Ojibwa"},{"code":"or","name":"Oriya"},{"code":"om","name":"Oromo"},{"code":"os","name":"Ossetian; Ossetic"},{"code":"pi","name":"Pali"},{"code":"pa","name":"Panjabi; Punjabi"},{"code":"fa","name":"Persian"},{"code":"pl","name":"Polish"},{"code":"pt","name":"Portuguese"},{"code":"ps","name":"Pushto; Pashto"},{"code":"qu","name":"Quechua"},{"code":"ro","name":"Romanian; Moldavian; Moldovan"},{"code":"rm","name":"Romansh"},{"code":"rn","name":"Rundi"},{"code":"ru","name":"Russian"},{"code":"sm","name":"Samoan"},{"code":"sg","name":"Sango"},{"code":"sa","name":"Sanskrit"},{"code":"sc","name":"Sardinian"},{"code":"sr","name":"Serbian"},{"code":"sn","name":"Shona"},{"code":"ii","name":"Sichuan Yi; Nuosu"},{"code":"sd","name":"Sindhi"},{"code":"si","name":"Sinhala; Sinhalese"},{"code":"sk","name":"Slovak"},{"code":"sl","name":"Slovenian"},{"code":"so","name":"Somali"},{"code":"st","name":"Sotho, Southern"},{"code":"es","name":"Spanish; Castilian"},{"code":"su","name":"Sundanese"},{"code":"sw","name":"Swahili"},{"code":"ss","name":"Swati"},{"code":"sv","name":"Swedish"},{"code":"tl","name":"Tagalog"},{"code":"ty","name":"Tahitian"},{"code":"tg","name":"Tajik"},{"code":"ta","name":"Tamil"},{"code":"tt","name":"Tatar"},{"code":"te","name":"Telugu"},{"code":"th","name":"Thai"},{"code":"bo","name":"Tibetan"},{"code":"ti","name":"Tigrinya"},{"code":"to","name":"Tonga (Tonga Islands)"},{"code":"ts","name":"Tsonga"},{"code":"tn","name":"Tswana"},{"code":"tr","name":"Turkish"},{"code":"tk","name":"Turkmen"},{"code":"tw","name":"Twi"},{"code":"ug","name":"Uighur; Uyghur"},{"code":"uk","name":"Ukrainian"},{"code":"ur","name":"Urdu"},{"code":"uz","name":"Uzbek"},{"code":"ve","name":"Venda"},{"code":"vi","name":"Vietnamese"},{"code":"vo","name":"Volapük"},{"code":"wa","name":"Walloon"},{"code":"cy","name":"Welsh"},{"code":"fy","name":"Western Frisian"},{"code":"wo","name":"Wolof"},{"code":"xh","name":"Xhosa"},{"code":"yi","name":"Yiddish"},{"code":"yo","name":"Yoruba"},{"code":"za","name":"Zhuang; Chuang"},{"code":"zu","name":"Zulu"}]}}}}}}},"/enums/user-features":{"get":{"tags":["Enums"],"summary":"List user features","description":"Gets the list of all existing user features and their descriptions.","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userFeatures":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"name":{"type":"string"}}}}}},"example":{"userFeatures":[{"title":"Allow access to internal IP addresses from scenarios (do not turn on if you don't know what you're doing!)","name":"local_access"},{"title":"Can create Apps without ID suffix","name":"allow_apps"},{"title":"Can use custom IML functions in Apps","name":"allow_apps_js"},{"title":"Can commit changes to approved Apps","name":"allow_apps_commit"},{"title":"Can change App consumables","name":"allow_apps_set_consumable"},{"title":"Can see private modules","name":"private_modules"},{"title":"Can create credential requests","name":"allow_credential_requests"}]}}}}}}},"/enums/organization-features":{"get":{"tags":["Enums"],"summary":"List organization features","description":"Gets the list of all existing organization features and their descriptions.","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organizationFeatures":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"name":{"type":"string"}}}}}},"example":{"organizationFeatures":[{"title":"Allow access to internal IP addresses from scenarios (do not turn on if you don't know what you're doing!)","name":"local_access"},{"title":"Allow migration of scenarios with hidden native apps!","name":"migration_scenarios_hidden_apps"},{"title":"Allow migration within the same zone","name":"migration_same_zone"}]}}}}}}},"/enums/user-email-notifications":{"get":{"tags":["Enums"],"summary":"List email notification settings","description":"Gets the list of available email notification settings and their `notificationId` values. The language of the notification settings descriptions is set according to user language settings by default. You can specify a different language for the notification settings descriptions with the `language` parameter.","parameters":[{"name":"language","in":"query","schema":{"type":"string"},"example":"en","description":"Language code in the ISO 639-1 code standard. Only `en` (English) language is supported."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userEmailNotifications":{"type":"array","items":{"type":"object","required":["id","translationKey","name","description"],"properties":{"id":{"type":"integer"},"translationKey":{"type":"string","description":"Internal translation key for the notification type."},"name":{"type":"string"},"description":{"type":"string"}}}}}},"example":{"userEmailNotifications":[{"id":2,"translationKey":"warningInScenarioRun","name":"Warning in scenario run","description":"Warnings encountered by your scenarios that need your attention, such as failure to connect with your apps and services."},{"id":1,"translationKey":"errorsInScenarioRun","name":"Errors in scenario run","description":"Notifications about errors encountered by specific modules in your scenarios that keep your workflows from running smoothly."},{"id":6,"translationKey":"scenarioDeactivation","name":"Scenario deactivation","description":"Get notified when your scenario gets deactivated due to critical issues such as multiple consecutive errors."},{"id":9,"translationKey":"credentialNotifications","name":"Connection and key activity","description":"Notifications when someone else uses a connection or key you created. If turned off, this disables notifications for your individual connections and keys."}]}}}}}}},"/enums/user-api-token-scopes":{"get":{"tags":["Enums"],"summary":"List API token scopes","description":"Gets the list of all of the existing user API token scopes. For more information about the user API scopes refer to the [Authentication section](../../authentication/api-scopes-overview.md).","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userApiTokenScopes":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"}}}}}},"example":{"userApiTokenScopes":[{"name":"accounts:read"},{"name":"accounts:write"},{"name":"admin:read"},{"name":"admin:write"},{"name":"apps:read"},{"name":"apps:write"},{"name":"imt-forms:read"},{"name":"imt-forms:write"},{"name":"keys:read"},{"name":"keys:write"},{"name":"notifications:read"},{"name":"notifications:write"},{"name":"organizations:read"},{"name":"organizations:write"},{"name":"packages:read"},{"name":"packages:write"},{"name":"scenarios:read"},{"name":"scenarios:write"},{"name":"system:read"},{"name":"system:write"},{"name":"templates:read"},{"name":"templates:write"},{"name":"udts:read"},{"name":"udts:write"}]}}}}}}},"/enums/imt-regions":{"get":{"tags":["Enums"],"summary":"List Make regions","description":"Gets the list of Make regions and their `regionId` values in the `id` column. The `regionId` is a required parameter when you create a new organization with the API call `POST /organizations`.","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"imtRegions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}}},"example":{"imtRegions":[{"id":1,"name":"Local"}]}}}}}}},"/enums/imt-zones":{"get":{"tags":["Enums"],"summary":"List Make zones","description":"Gets the list of Make zones and their `zoneId` values in the `id` column. The `zoneId` is a required parameter when you create a new organization with the API call `POST /organizations`.","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"imtZones":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"domain":{"type":"string"},"name":{"type":"string"}}}}}},"example":{"imtZones":[{"id":1,"domain":"slave1.make.cloud","name":"Zone Slave 1"},{"id":2,"domain":"slave2.make.cloud","name":"Zone Slave 2"}]}}}}}}},"/enums/apps-review-statuses":{"get":{"tags":["Enums"],"summary":"List apps review status","description":"Gets the list of statuses that Make assigns to custom apps. \n - `requestAccepted`: Make has received the request for a custom app review.\n - `inProgress`: The custom app review is in progress.\n - `feedbackSent`: The Make app developers have sent their feedback to the developer of the custom app.\n - `completed`:\n - `waitingForRelease`:\n - `declined`: The custom app publishing has been declined by Make. The reasons for that could be: ","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"reviewStatuses":{"type":"array","items":{"type":"object","properties":{"value":{"type":"integer"},"label":{"type":"string"}}}}}},"example":{"reviewStatuses":[{"value":0,"label":"{{!apps.forms.review.status.requestAccepted}}"},{"value":1,"label":"{{!apps.forms.review.status.inProgress}}"},{"value":2,"label":"{{!apps.forms.review.status.feedbackSent}}"},{"value":3,"label":"{{!apps.forms.review.status.completed}}"},{"value":4,"label":"{{!apps.forms.review.status.waitingForRelease}}"},{"value":5,"label":"{{!apps.forms.review.status.declined}}"}]}}}}}}},"/enums/variable-types":{"get":{"tags":["Enums"],"summary":"List variable types","description":"Retrieves the mapping of custom variable types and their `typeId` values.","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"variableTypes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamOnly":{"type":"boolean"}}}}}},"example":{"variableTypes":[{"id":1,"name":"number","teamOnly":false},{"id":2,"name":"string","teamOnly":false},{"id":3,"name":"boolean","teamOnly":false},{"id":4,"name":"date","teamOnly":false}]}}}}}}},"/functions/v2/endpoint-catalog":{"get":{"operationId":"getFunctionEndpointCatalog","x-internal":true,"tags":["Functions V2"],"summary":"List usable endpoint definitions","description":"Live availability is authorized for the caller and Team. Generated public types are advisory. Catalog outages retain generic availability. Pin catalogId for a stable editor session; explicit-version failure returns catalogStatus unavailable. Missing private/custom definitions remain generic. The POST lookup is a read operation requiring both read scopes.","security":[{"token":["functions:read","apps:read"]}],"responses":{"200":{"description":"Authorized endpoint metadata and catalog status.","content":{"application/json":{"schema":{"type":"object","required":["catalogStatus","endpoints"],"properties":{"catalogId":{"type":"string","description":"Immutable SDK-version and SHA-256 identifier selected for this editor session."},"catalogStatus":{"type":"string","enum":["ready","unavailable"]},"endpoints":{"type":"array","items":{"allOf":[{"type":"object","required":["appName","appVersion","endpointName"],"properties":{"appName":{"type":"string","minLength":1,"maxLength":256},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":256}}},{"type":"object","required":["appLabel","endpointLabel","annotations","credentialsRequired","credentialsAvailable","typeStatus"],"properties":{"appLabel":{"type":"string"},"endpointLabel":{"type":"string"},"description":{"type":"string"},"annotations":{"type":"object","additionalProperties":true},"credentialsRequired":{"type":"boolean"},"credentialsAvailable":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string"}}}},"typeStatus":{"type":"string","enum":["available","definition_missing","catalog_unavailable","not_authorized"]}}}]}}}},"examples":{"cold-start":{"value":{"catalogStatus":"unavailable","endpoints":[]}}}}}},"400":{"description":"Request validation failed.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM005","message":"teamId must be a positive integer."}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"503":{"description":"Live endpoint availability could not be established; no unfiltered catalog is returned."}},"parameters":[{"name":"teamId","in":"query","required":true,"description":"Team that owns the Function collection.","schema":{"type":"integer","format":"int32","minimum":1},"example":42}]}},"/functions/v2/endpoint-catalog/types":{"post":{"operationId":"getFunctionEndpointTypes","x-internal":true,"tags":["Functions V2"],"summary":"Get selected endpoint editor types","description":"Live availability is authorized for the caller and Team. Generated public types are advisory. Catalog outages retain generic availability. Pin catalogId for a stable editor session; explicit-version failure returns catalogStatus unavailable. Missing private/custom definitions remain generic. The POST lookup is a read operation requiring both read scopes.","security":[{"token":["functions:read","apps:read"]}],"responses":{"200":{"description":"Authorized endpoint metadata and catalog status.","content":{"application/json":{"schema":{"type":"object","required":["catalogStatus","endpoints"],"properties":{"catalogId":{"type":"string","description":"Immutable SDK-version and SHA-256 identifier selected for this editor session."},"catalogStatus":{"type":"string","enum":["ready","unavailable"]},"endpoints":{"type":"array","items":{"allOf":[{"type":"object","required":["appName","appVersion","endpointName"],"properties":{"appName":{"type":"string","minLength":1,"maxLength":256},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":256}}},{"type":"object","required":["available","typeStatus"],"properties":{"available":{"type":"boolean"},"typeStatus":{"type":"string","enum":["available","definition_missing","catalog_unavailable","not_authorized"]},"definition":{"type":"object","required":["declarations","inputType","outputType"],"properties":{"declarations":{"type":"string","maxLength":2097152},"inputType":{"type":"string","pattern":"^[A-Za-z_$][A-Za-z0-9_$]*$"},"outputType":{"type":"string","pattern":"^[A-Za-z_$][A-Za-z0-9_$]*$"}}}}}]}}}},"examples":{"cold-start":{"value":{"catalogStatus":"unavailable","endpoints":[]}}}}}},"400":{"description":"Request validation failed.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM005","message":"teamId must be a positive integer."}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"503":{"description":"Live endpoint availability could not be established; no unfiltered catalog is returned."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["teamId","endpoints"],"properties":{"teamId":{"type":"integer","minimum":1},"functionId":{"type":"integer","minimum":1,"description":"Saved Function whose public types may be retained when its endpoints become unavailable; must be visible to the caller and belong to teamId."},"catalogId":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+-[a-f0-9]{64}$","description":"Pin to a previously selected catalog; retrieval failure never substitutes another version."},"endpoints":{"type":"array","maxItems":100,"items":{"type":"object","required":["appName","appVersion","endpointName"],"properties":{"appName":{"type":"string","minLength":1,"maxLength":256},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":256}}}},"functionVersion":{"type":"integer","minimum":1,"description":"Saved version to retain types from; requires functionId. Defaults to the latest saved version."}}},"examples":{"selected-endpoints":{"value":{"teamId":42,"functionId":741,"endpoints":[{"appName":"slack","appVersion":4,"endpointName":"addPin"}]}}}}}}}},"/functions/v2":{"get":{"operationId":"listFunctionsV2","x-internal":true,"tags":["Functions V2"],"summary":"List Functions","description":"Lists Functions visible to the caller in one Team with their complete latest-version\nmetadata. Filters combine with AND; each array filter matches any listed value. Requested\nIDs that are missing or invisible are omitted.\n","security":[{"token":["functions:read"]}],"parameters":[{"name":"teamId","in":"query","required":true,"description":"Team that owns the Function collection.","schema":{"type":"integer","format":"int32","minimum":1},"example":42},{"name":"ids[]","in":"query","required":false,"description":"Include only these Function IDs. At most 100 unique IDs.","style":"form","explode":true,"schema":{"type":"array","maxItems":100,"uniqueItems":true,"items":{"type":"integer","format":"int32","minimum":1}},"example":[741,912]},{"name":"endpointAppNames[]","in":"query","required":false,"description":"Include Functions whose latest version declares an endpoint from any listed app.","style":"form","explode":true,"schema":{"type":"array","maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":128}},"example":["salesforce","gmail"]},{"name":"search","in":"query","required":false,"description":"Case-insensitive literal substring match against Function name and description.","schema":{"type":"string","maxLength":256},"example":"invoice"},{"name":"pg[limit]","in":"query","required":false,"description":"Maximum number of records to return.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"example":50},{"name":"pg[offset]","in":"query","required":false,"description":"Number of records to skip before returning the page.","schema":{"type":"integer","minimum":0,"default":0},"example":0},{"name":"pg[sortBy]","in":"query","required":false,"description":"Property used to sort Functions.","schema":{"type":"string","enum":["id"],"default":"id"},"example":"id"},{"name":"pg[sortDir]","in":"query","required":false,"description":"Sorting direction.","schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"example":"asc"}],"responses":{"200":{"description":"Function summaries in stable ID order.","headers":{"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["functions","pg"],"properties":{"functions":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","teamId","name","active","latestVersion","createdAt","updatedAt"],"properties":{"id":{"type":"integer","format":"int32","minimum":1},"teamId":{"type":"integer","format":"int32","minimum":1},"name":{"type":"string"},"description":{"type":"string","nullable":true},"active":{"type":"boolean","description":"Whether published versions accept Runs. New and restored Functions are off; inline Runs work either way."},"latestVersion":{"type":"object","additionalProperties":false,"required":["version","inputSchema","outputSchema","connections","endpoints","createdAt"],"properties":{"version":{"type":"integer","format":"int32","minimum":1},"inputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"outputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"connections":{"type":"object","additionalProperties":{"type":"integer","format":"int32","minimum":1}},"endpoints":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"description":"An Endpoint the Function source may call, each one declared once. Code calls it in the\nEndpoints SDK's shape with a declared connection label, for example\n`make.endpoints.salesforce.v4.getCustomer({ input: { id }, connection: 'crm' })`.\n","required":["alias","appName","appVersion","endpointName"],"properties":{"alias":{"type":"string","minLength":1,"maxLength":128,"description":"Display name of the declaration. Code calls the Endpoint by its app, version and name, never by alias."},"connectionKey":{"type":"string","minLength":1,"maxLength":128,"description":"Label of the declared connection the editor binds this Endpoint to; its calls pass the same label as `connection`."},"appName":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":128}}}},"createdAt":{"type":"string","format":"date-time"}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}},"pg":{"type":"object","additionalProperties":false,"required":["limit","offset","sortBy","sortDir"],"properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"sortBy":{"type":"string"},"sortDir":{"type":"string","enum":["asc","desc"]}}}}},"examples":{"page":{"value":{"functions":[{"id":741,"teamId":42,"name":"normalizeInvoices","description":"Normalizes invoice records.","active":true,"latestVersion":{"version":3,"inputSchema":{},"outputSchema":{},"connections":{"crm":22019},"endpoints":[{"alias":"Get customer","appName":"salesforce","appVersion":4,"endpointName":"getCustomer","connectionKey":"crm"}],"createdAt":"2026-09-20T10:30:00.000Z"},"createdAt":"2026-09-18T09:00:00.000Z","updatedAt":"2026-09-21T12:15:00.000Z"}],"pg":{"limit":50,"offset":0,"sortBy":"id","sortDir":"asc"}}}}}}},"400":{"description":"Request validation failed.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM005","message":"teamId must be a positive integer."}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}}}},"post":{"operationId":"createFunctionV2","x-internal":true,"tags":["Functions V2"],"summary":"Create a Function","description":"Creates the Team-owned Function with its declarations and publishes the submitted source\nas immutable version `1`.\n","security":[{"token":["functions:write"]}],"parameters":[{"name":"teamId","in":"query","required":true,"description":"Team that owns the Function collection.","schema":{"type":"integer","format":"int32","minimum":1},"example":42}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["name","content"],"properties":{"name":{"type":"string","minLength":1,"maxLength":128},"description":{"type":"string","maxLength":1024,"nullable":true},"content":{"type":"object","additionalProperties":false,"required":["source","inputSchema"],"properties":{"source":{"type":"string","description":"UTF-8 TypeScript source. The server enforces the documented source byte limit."},"inputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"outputSchema":{"allOf":[{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"}],"description":"Optional authoritative output contract. Omission is equivalent to `{}` and is normalized\nbefore validation, hashing, persistence, declaration generation, and execution.\n"},"connections":{"type":"object","description":"Connection label to Make connection ID used by this version.","maxProperties":100,"default":{},"additionalProperties":{"type":"integer","format":"int32","minimum":1}},"endpoints":{"type":"array","description":"App endpoints the Function source may call.","maxItems":100,"default":[],"items":{"type":"object","additionalProperties":false,"description":"An Endpoint the Function source may call, each one declared once. Code calls it in the\nEndpoints SDK's shape with a declared connection label, for example\n`make.endpoints.salesforce.v4.getCustomer({ input: { id }, connection: 'crm' })`.\n","required":["alias","appName","appVersion","endpointName"],"properties":{"alias":{"type":"string","minLength":1,"maxLength":128,"description":"Display name of the declaration. Code calls the Endpoint by its app, version and name, never by alias."},"connectionKey":{"type":"string","minLength":1,"maxLength":128,"description":"Label of the declared connection the editor binds this Endpoint to; its calls pass the same label as `connection`."},"appName":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":128}}}}}}}},"examples":{"create":{"value":{"name":"normalizeInvoices","description":"Normalizes invoice records.","content":{"source":"export default async function main(input: Input): Promise<Output> {\n  return input;\n}\n","inputSchema":{},"outputSchema":{},"connections":{"crm":22019},"endpoints":[{"alias":"Get customer","appName":"salesforce","appVersion":4,"endpointName":"getCustomer","connectionKey":"crm"}]}}}}}}},"responses":{"201":{"description":"Function and version `1` published.","headers":{"Location":{"description":"Public URL of the created resource.","schema":{"type":"string"},"example":"/api/v2/functions/v2/741"},"ETag":{"description":"Strong validator for returned mutable Function metadata.","schema":{"type":"string"},"example":"\"function-741-5\""},"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["function"],"properties":{"function":{"type":"object","additionalProperties":false,"required":["id","teamId","name","active","latestVersion","createdAt","updatedAt"],"properties":{"id":{"type":"integer","format":"int32","minimum":1},"teamId":{"type":"integer","format":"int32","minimum":1},"name":{"type":"string"},"description":{"type":"string","nullable":true},"active":{"type":"boolean","description":"Whether published versions accept Runs. New and restored Functions are off; inline Runs work either way."},"latestVersion":{"type":"object","additionalProperties":false,"required":["version","inputSchema","outputSchema","connections","endpoints","createdAt"],"properties":{"version":{"type":"integer","format":"int32","minimum":1},"inputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"outputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"connections":{"type":"object","additionalProperties":{"type":"integer","format":"int32","minimum":1}},"endpoints":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"description":"An Endpoint the Function source may call, each one declared once. Code calls it in the\nEndpoints SDK's shape with a declared connection label, for example\n`make.endpoints.salesforce.v4.getCustomer({ input: { id }, connection: 'crm' })`.\n","required":["alias","appName","appVersion","endpointName"],"properties":{"alias":{"type":"string","minLength":1,"maxLength":128,"description":"Display name of the declaration. Code calls the Endpoint by its app, version and name, never by alias."},"connectionKey":{"type":"string","minLength":1,"maxLength":128,"description":"Label of the declared connection the editor binds this Endpoint to; its calls pass the same label as `connection`."},"appName":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":128}}}},"createdAt":{"type":"string","format":"date-time"}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"created":{"value":{"function":{"id":741,"teamId":42,"name":"normalizeInvoices","description":"Normalizes invoice records.","active":false,"latestVersion":{"version":1,"inputSchema":{},"outputSchema":{},"connections":{"crm":22019},"endpoints":[{"alias":"Get customer","appName":"salesforce","appVersion":4,"endpointName":"getCustomer","connectionKey":"crm"}],"createdAt":"2026-09-21T12:15:00.000Z"},"createdAt":"2026-09-21T12:15:00.000Z","updatedAt":"2026-09-21T12:15:00.000Z"}}}}}}},"400":{"description":"Request validation failed.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM005","message":"teamId must be a positive integer."}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"409":{"description":"The request conflicts with current resource state.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC409","message":"The request conflicts with the current Function state."}}}},"422":{"description":"Static preflight or semantic validation rejected the request.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC422","message":"Static preflight rejected the submitted content.","detail":{"reason":"sts_validation_failed"}}}}}}}},"/functions/v2/{functionId}":{"parameters":[{"name":"functionId","in":"path","required":true,"description":"Function identifier. Functions Control resolves its owning Team and performs authoritative\nTeam and resource authorization for this Function and every nested resource.\n","schema":{"type":"integer","format":"int32","minimum":1},"example":741}],"get":{"operationId":"getFunctionV2","x-internal":true,"tags":["Functions V2"],"summary":"Get a Function","description":"Returns mutable Function metadata and the latest version number.","security":[{"token":["functions:read"]}],"responses":{"200":{"description":"Function metadata.","headers":{"ETag":{"description":"Strong validator for returned mutable Function metadata.","schema":{"type":"string"},"example":"\"function-741-5\""},"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["function"],"properties":{"function":{"type":"object","additionalProperties":false,"required":["id","teamId","name","active","latestVersion","createdAt","updatedAt"],"properties":{"id":{"type":"integer","format":"int32","minimum":1},"teamId":{"type":"integer","format":"int32","minimum":1},"name":{"type":"string"},"description":{"type":"string","nullable":true},"active":{"type":"boolean","description":"Whether published versions accept Runs. New and restored Functions are off; inline Runs work either way."},"latestVersion":{"type":"object","additionalProperties":false,"required":["version","inputSchema","outputSchema","connections","endpoints","createdAt"],"properties":{"version":{"type":"integer","format":"int32","minimum":1},"inputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"outputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"connections":{"type":"object","additionalProperties":{"type":"integer","format":"int32","minimum":1}},"endpoints":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"description":"An Endpoint the Function source may call, each one declared once. Code calls it in the\nEndpoints SDK's shape with a declared connection label, for example\n`make.endpoints.salesforce.v4.getCustomer({ input: { id }, connection: 'crm' })`.\n","required":["alias","appName","appVersion","endpointName"],"properties":{"alias":{"type":"string","minLength":1,"maxLength":128,"description":"Display name of the declaration. Code calls the Endpoint by its app, version and name, never by alias."},"connectionKey":{"type":"string","minLength":1,"maxLength":128,"description":"Label of the declared connection the editor binds this Endpoint to; its calls pass the same label as `connection`."},"appName":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":128}}}},"createdAt":{"type":"string","format":"date-time"}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"detail":{"value":{"function":{"id":741,"teamId":42,"name":"normalizeInvoices","description":"Normalizes invoice records.","active":true,"latestVersion":{"version":3,"inputSchema":{},"outputSchema":{},"connections":{"crm":22019},"endpoints":[{"alias":"Get customer","appName":"salesforce","appVersion":4,"endpointName":"getCustomer","connectionKey":"crm"}],"createdAt":"2026-09-20T10:30:00.000Z"},"createdAt":"2026-09-18T09:00:00.000Z","updatedAt":"2026-09-21T12:15:00.000Z"}}}}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC404","message":"Function resource not found."}}}}}},"patch":{"operationId":"updateFunctionV2","x-internal":true,"tags":["Functions V2"],"summary":"Update Function metadata","description":"Updates the name or description without publishing a version.","security":[{"token":["functions:write"]}],"parameters":[{"name":"If-Match","in":"header","required":true,"description":"Strong ETag of the mutable Function metadata being changed.","schema":{"type":"string","minLength":1},"example":"\"function-741-5\""}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"name":{"type":"string","minLength":1,"maxLength":128},"description":{"type":"string","maxLength":1024,"nullable":true}}},"examples":{"rename":{"value":{"name":"normalizePaidInvoices"}}}}}},"responses":{"200":{"description":"Updated Function metadata.","headers":{"ETag":{"description":"Strong validator for returned mutable Function metadata.","schema":{"type":"string"},"example":"\"function-741-5\""},"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["function"],"properties":{"function":{"type":"object","additionalProperties":false,"required":["id","teamId","name","active","latestVersion","createdAt","updatedAt"],"properties":{"id":{"type":"integer","format":"int32","minimum":1},"teamId":{"type":"integer","format":"int32","minimum":1},"name":{"type":"string"},"description":{"type":"string","nullable":true},"active":{"type":"boolean","description":"Whether published versions accept Runs. New and restored Functions are off; inline Runs work either way."},"latestVersion":{"type":"object","additionalProperties":false,"required":["version","inputSchema","outputSchema","connections","endpoints","createdAt"],"properties":{"version":{"type":"integer","format":"int32","minimum":1},"inputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"outputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"connections":{"type":"object","additionalProperties":{"type":"integer","format":"int32","minimum":1}},"endpoints":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"description":"An Endpoint the Function source may call, each one declared once. Code calls it in the\nEndpoints SDK's shape with a declared connection label, for example\n`make.endpoints.salesforce.v4.getCustomer({ input: { id }, connection: 'crm' })`.\n","required":["alias","appName","appVersion","endpointName"],"properties":{"alias":{"type":"string","minLength":1,"maxLength":128,"description":"Display name of the declaration. Code calls the Endpoint by its app, version and name, never by alias."},"connectionKey":{"type":"string","minLength":1,"maxLength":128,"description":"Label of the declared connection the editor binds this Endpoint to; its calls pass the same label as `connection`."},"appName":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":128}}}},"createdAt":{"type":"string","format":"date-time"}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"updated":{"value":{"function":{"id":741,"teamId":42,"name":"normalizePaidInvoices","description":"Normalizes invoice records.","active":true,"latestVersion":{"version":3,"inputSchema":{},"outputSchema":{},"connections":{"crm":22019},"endpoints":[{"alias":"Get customer","appName":"salesforce","appVersion":4,"endpointName":"getCustomer","connectionKey":"crm"}],"createdAt":"2026-09-20T10:30:00.000Z"},"createdAt":"2026-09-18T09:00:00.000Z","updatedAt":"2026-09-21T12:20:00.000Z"}}}}}}},"400":{"description":"Request validation failed.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM005","message":"teamId must be a positive integer."}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC404","message":"Function resource not found."}}}},"412":{"description":"The supplied ETag or expected publication base is stale.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC412","message":"The supplied representation is stale."}}}},"428":{"description":"A required `If-Match` header is missing.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC428","message":"If-Match is required."}}}}}},"delete":{"operationId":"deleteFunctionV2","x-internal":true,"tags":["Functions V2"],"summary":"Delete a Function","description":"Deletes the Function, immediately removes it from customer access, blocks new work, and\nstarts erasure of Function-owned authoring data. Retained Run, audit, charging, and backup\nrecords follow their own retention policies.\n","security":[{"token":["functions:write"]}],"parameters":[{"name":"If-Match","in":"header","required":true,"description":"Strong ETag of the mutable Function metadata being changed.","schema":{"type":"string","minLength":1},"example":"\"function-741-5\""}],"responses":{"204":{"description":"Function deleted.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC404","message":"Function resource not found."}}}},"412":{"description":"The supplied ETag or expected publication base is stale.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC412","message":"The supplied representation is stale."}}}},"428":{"description":"A required `If-Match` header is missing.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC428","message":"If-Match is required."}}}}}}},"/functions/v2/{functionId}/versions":{"parameters":[{"name":"functionId","in":"path","required":true,"description":"Function identifier. Functions Control resolves its owning Team and performs authoritative\nTeam and resource authorization for this Function and every nested resource.\n","schema":{"type":"integer","format":"int32","minimum":1},"example":741}],"get":{"operationId":"listFunctionV2Versions","x-internal":true,"tags":["Functions V2"],"summary":"List Function versions","description":"Lists immutable version metadata without source.","security":[{"token":["functions:read"]}],"parameters":[{"name":"pg[limit]","in":"query","required":false,"description":"Maximum number of records to return.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"example":50},{"name":"pg[offset]","in":"query","required":false,"description":"Number of records to skip before returning the page.","schema":{"type":"integer","minimum":0,"default":0},"example":0},{"name":"pg[sortBy]","in":"query","required":false,"description":"Property used to sort Function versions.","schema":{"type":"string","enum":["version"],"default":"version"},"example":"version"},{"name":"pg[sortDir]","in":"query","required":false,"description":"Sorting direction.","schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"example":"asc"}],"responses":{"200":{"description":"Immutable version summaries.","headers":{"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["versions","pg"],"properties":{"versions":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["version","inputSchema","outputSchema","connections","endpoints","createdAt"],"properties":{"version":{"type":"integer","format":"int32","minimum":1},"inputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"outputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"connections":{"type":"object","additionalProperties":{"type":"integer","format":"int32","minimum":1}},"endpoints":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"description":"An Endpoint the Function source may call, each one declared once. Code calls it in the\nEndpoints SDK's shape with a declared connection label, for example\n`make.endpoints.salesforce.v4.getCustomer({ input: { id }, connection: 'crm' })`.\n","required":["alias","appName","appVersion","endpointName"],"properties":{"alias":{"type":"string","minLength":1,"maxLength":128,"description":"Display name of the declaration. Code calls the Endpoint by its app, version and name, never by alias."},"connectionKey":{"type":"string","minLength":1,"maxLength":128,"description":"Label of the declared connection the editor binds this Endpoint to; its calls pass the same label as `connection`."},"appName":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":128}}}},"createdAt":{"type":"string","format":"date-time"}}}},"pg":{"type":"object","additionalProperties":false,"required":["limit","offset","sortBy","sortDir"],"properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"sortBy":{"type":"string"},"sortDir":{"type":"string","enum":["asc","desc"]}}}}},"examples":{"versions":{"value":{"versions":[{"version":3,"inputSchema":{},"outputSchema":{},"connections":{"crm":22019},"endpoints":[{"alias":"Get customer","appName":"salesforce","appVersion":4,"endpointName":"getCustomer","connectionKey":"crm"}],"createdAt":"2026-09-20T10:30:00.000Z"}],"pg":{"limit":50,"offset":0,"sortBy":"version","sortDir":"asc"}}}}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC404","message":"Function resource not found."}}}}}},"post":{"operationId":"publishFunctionV2Version","x-internal":true,"tags":["Functions V2"],"summary":"Publish a Function version","description":"Runs bounded static preflight for the submitted content. On success, publishes the next\nimmutable integer source version with its input, output, endpoint, and connection\ndeclarations, then makes it latest. Rejected or stale publication creates no version.\n","security":[{"token":["functions:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["content","expectedLatestVersion"],"properties":{"content":{"type":"object","additionalProperties":false,"required":["source","inputSchema"],"properties":{"source":{"type":"string","description":"UTF-8 TypeScript source. The server enforces the documented source byte limit."},"inputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"outputSchema":{"allOf":[{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"}],"description":"Optional authoritative output contract. Omission is equivalent to `{}` and is normalized\nbefore validation, hashing, persistence, declaration generation, and execution.\n"},"connections":{"type":"object","description":"Connection label to Make connection ID used by this version.","maxProperties":100,"default":{},"additionalProperties":{"type":"integer","format":"int32","minimum":1}},"endpoints":{"type":"array","description":"App endpoints the Function source may call.","maxItems":100,"default":[],"items":{"type":"object","additionalProperties":false,"description":"An Endpoint the Function source may call, each one declared once. Code calls it in the\nEndpoints SDK's shape with a declared connection label, for example\n`make.endpoints.salesforce.v4.getCustomer({ input: { id }, connection: 'crm' })`.\n","required":["alias","appName","appVersion","endpointName"],"properties":{"alias":{"type":"string","minLength":1,"maxLength":128,"description":"Display name of the declaration. Code calls the Endpoint by its app, version and name, never by alias."},"connectionKey":{"type":"string","minLength":1,"maxLength":128,"description":"Label of the declared connection the editor binds this Endpoint to; its calls pass the same label as `connection`."},"appName":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":128}}}}}},"expectedLatestVersion":{"type":"integer","format":"int32","minimum":1}}},"examples":{"publish":{"value":{"expectedLatestVersion":3,"content":{"source":"export default async function main(input: Input): Promise<Output> {\n  return input;\n}\n","inputSchema":{},"outputSchema":{},"connections":{"crm":22019},"endpoints":[{"alias":"Get customer","appName":"salesforce","appVersion":4,"endpointName":"getCustomer","connectionKey":"crm"}]}}}}}}},"responses":{"201":{"description":"Next immutable version published as latest.","headers":{"Location":{"description":"Public URL of the created resource.","schema":{"type":"string"},"example":"/api/v2/functions/v2/741"},"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["functionVersion"],"properties":{"functionVersion":{"type":"object","additionalProperties":false,"required":["version","inputSchema","outputSchema","connections","endpoints","createdAt"],"properties":{"version":{"type":"integer","format":"int32","minimum":1},"inputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"outputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"connections":{"type":"object","additionalProperties":{"type":"integer","format":"int32","minimum":1}},"endpoints":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"description":"An Endpoint the Function source may call, each one declared once. Code calls it in the\nEndpoints SDK's shape with a declared connection label, for example\n`make.endpoints.salesforce.v4.getCustomer({ input: { id }, connection: 'crm' })`.\n","required":["alias","appName","appVersion","endpointName"],"properties":{"alias":{"type":"string","minLength":1,"maxLength":128,"description":"Display name of the declaration. Code calls the Endpoint by its app, version and name, never by alias."},"connectionKey":{"type":"string","minLength":1,"maxLength":128,"description":"Label of the declared connection the editor binds this Endpoint to; its calls pass the same label as `connection`."},"appName":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":128}}}},"createdAt":{"type":"string","format":"date-time"}}}}},"examples":{"published":{"value":{"functionVersion":{"version":3,"inputSchema":{},"outputSchema":{},"connections":{"crm":22019},"endpoints":[{"alias":"Get customer","appName":"salesforce","appVersion":4,"endpointName":"getCustomer","connectionKey":"crm"}],"createdAt":"2026-09-20T10:30:00.000Z"}}}}}}},"400":{"description":"Request validation failed.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM005","message":"teamId must be a positive integer."}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC404","message":"Function resource not found."}}}},"409":{"description":"The request conflicts with current resource state.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC409","message":"The request conflicts with the current Function state."}}}},"422":{"description":"Static preflight or semantic validation rejected the request.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC422","message":"Static preflight rejected the submitted content.","detail":{"reason":"sts_validation_failed"}}}}},"503":{"description":"A required downstream dependency is temporarily unavailable.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC503","message":"Static preflight is temporarily unavailable."}}}}}}},"/functions/v2/{functionId}/versions/{version}":{"parameters":[{"name":"functionId","in":"path","required":true,"description":"Function identifier. Functions Control resolves its owning Team and performs authoritative\nTeam and resource authorization for this Function and every nested resource.\n","schema":{"type":"integer","format":"int32","minimum":1},"example":741},{"name":"version","in":"path","required":true,"description":"Immutable Function version number.","schema":{"type":"integer","format":"int32","minimum":1},"example":3}],"get":{"operationId":"getFunctionV2Version","x-internal":true,"tags":["Functions V2"],"summary":"Get a Function version","description":"Returns the immutable version, including its exact published source.","security":[{"token":["functions:read"]}],"responses":{"200":{"description":"Immutable Function version.","headers":{"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["functionVersion"],"properties":{"functionVersion":{"type":"object","additionalProperties":false,"required":["version","source","inputSchema","outputSchema","connections","endpoints","createdAt"],"properties":{"version":{"type":"integer","format":"int32","minimum":1},"source":{"type":"string","description":"Exact UTF-8 TypeScript source published in this version."},"inputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"outputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"connections":{"type":"object","additionalProperties":{"type":"integer","format":"int32","minimum":1}},"endpoints":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"description":"An Endpoint the Function source may call, each one declared once. Code calls it in the\nEndpoints SDK's shape with a declared connection label, for example\n`make.endpoints.salesforce.v4.getCustomer({ input: { id }, connection: 'crm' })`.\n","required":["alias","appName","appVersion","endpointName"],"properties":{"alias":{"type":"string","minLength":1,"maxLength":128,"description":"Display name of the declaration. Code calls the Endpoint by its app, version and name, never by alias."},"connectionKey":{"type":"string","minLength":1,"maxLength":128,"description":"Label of the declared connection the editor binds this Endpoint to; its calls pass the same label as `connection`."},"appName":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":128}}}},"createdAt":{"type":"string","format":"date-time"}}}}},"examples":{"version":{"value":{"functionVersion":{"version":3,"source":"export default async function main(input: Input): Promise<Output> {\n  return input;\n}\n","inputSchema":{},"outputSchema":{},"connections":{"crm":22019},"endpoints":[{"alias":"Get customer","appName":"salesforce","appVersion":4,"endpointName":"getCustomer","connectionKey":"crm"}],"createdAt":"2026-09-20T10:30:00.000Z"}}}}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC404","message":"Function resource not found."}}}}}}},"/functions/v2/{functionId}/runs":{"parameters":[{"name":"functionId","in":"path","required":true,"description":"Function identifier. Functions Control resolves its owning Team and performs authoritative\nTeam and resource authorization for this Function and every nested resource.\n","schema":{"type":"integer","format":"int32","minimum":1},"example":741}],"get":{"operationId":"listFunctionV2Runs","x-internal":true,"tags":["Functions V2 / Runs"],"summary":"List Function Runs","description":"Lists bounded Run summaries without source, Run input/output, or provider details.","security":[{"token":["functions:read"]}],"parameters":[{"name":"pg[limit]","in":"query","required":false,"description":"Maximum number of records to return.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"example":50},{"name":"pg[offset]","in":"query","required":false,"description":"Number of records to skip before returning the page.","schema":{"type":"integer","minimum":0,"default":0},"example":0},{"name":"pg[sortBy]","in":"query","required":false,"description":"Property used to sort Runs.","schema":{"type":"string","enum":["createdAt"],"default":"createdAt"},"example":"createdAt"},{"name":"pg[sortDir]","in":"query","required":false,"description":"Sorting direction.","schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"example":"asc"},{"name":"version","in":"query","required":false,"description":"Include only Runs admitted from this published version.","schema":{"type":"integer","format":"int32","minimum":1},"example":3},{"name":"createdFrom","in":"query","required":false,"description":"Inclusive lower bound for Run creation time.","schema":{"type":"string","format":"date-time"},"example":"2026-09-01T00:00:00.000Z"},{"name":"createdTo","in":"query","required":false,"description":"Exclusive upper bound for Run creation time.","schema":{"type":"string","format":"date-time"},"example":"2026-10-01T00:00:00.000Z"}],"responses":{"200":{"description":"Run summaries ordered by creation time and ID.","headers":{"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["runs","pg"],"properties":{"runs":{"type":"array","items":{"type":"object","required":["id","origin","status","caller","attemptCount","maximumAttempts","timeoutSeconds","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"functionId":{"type":"integer","format":"int32","minimum":1,"description":"Present when the Run is associated with a Function."},"origin":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","version"],"properties":{"type":{"type":"string","enum":["version"]},"version":{"type":"integer","format":"int32","minimum":1}}},{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"type":"string","enum":["inline"]}}}]},"status":{"type":"string","enum":["queued","provisioning","compiling","running","terminating","succeeded","failed","timed_out","cancelled"]},"consumption":{"type":"object","description":"Committed Run consumption, including Endpoint calls. Omitted before settlement or when historical consumption is unknown.","required":["centicredits"],"properties":{"centicredits":{"type":"integer","minimum":0,"description":"One credit equals 100 centicredits."}}},"caller":{"type":"object","additionalProperties":false,"required":["type","label"],"properties":{"type":{"type":"string","enum":["user","service","system"]},"id":{"type":"string","nullable":true},"label":{"type":"string"}}},"attemptCount":{"type":"integer","minimum":1},"maximumAttempts":{"type":"integer","minimum":1,"maximum":3},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":300},"error":{"type":"object","additionalProperties":false,"required":["code","message","category","sideEffectPossible"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"category":{"type":"string","enum":["customer_error","customer_limit","platform_failure"]},"sideEffectPossible":{"type":"boolean"}}},"createdAt":{"type":"string","format":"date-time"},"queuedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}},"pg":{"type":"object","additionalProperties":false,"required":["limit","offset","sortBy","sortDir"],"properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"sortBy":{"type":"string"},"sortDir":{"type":"string","enum":["asc","desc"]}}}}},"examples":{"runs":{"value":{"runs":[{"id":"018f4cf5-973a-7a65-91a5-318a4df9f782","functionId":741,"origin":{"type":"version","version":3},"status":"succeeded","caller":{"type":"user","id":"1001","label":"Ada Lovelace"},"attemptCount":1,"maximumAttempts":3,"timeoutSeconds":60,"createdAt":"2026-09-21T13:00:00.000Z","startedAt":"2026-09-21T13:00:02.000Z","completedAt":"2026-09-21T13:00:04.000Z","updatedAt":"2026-09-21T13:00:04.000Z"}],"pg":{"limit":50,"offset":0,"sortBy":"createdAt","sortDir":"desc"}}}}}}},"400":{"description":"Request validation failed.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM005","message":"teamId must be a positive integer."}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC404","message":"Function resource not found."}}}}}},"post":{"operationId":"createFunctionV2Run","x-internal":true,"tags":["Functions V2 / Runs"],"summary":"Create a published Function Run","description":"Admits a Run from the latest or explicitly selected published version. By default the response\nis asynchronous. Set `responsive` to wait for terminal observation for at most\n`maxWaitSeconds` (maximum 60); wait expiry returns `202` and the Run continues.\n","security":[{"token":["functions:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"allOf":[{"anyOf":[{"required":["responsive"],"properties":{"responsive":{"enum":[true]}}},{"not":{"required":["maxWaitSeconds"]}}]}],"properties":{"data":{"allOf":[{"nullable":true,"description":"Any valid JSON value up to 64 levels and 10,000 nodes before schema evaluation."}],"description":"Optional argument validated against the selected published version's input contract."},"version":{"type":"integer","format":"int32","minimum":1,"description":"Omit to use the latest published version."},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":300,"default":300},"responsive":{"type":"boolean","default":false},"maxWaitSeconds":{"type":"integer","minimum":1,"maximum":60,"default":60,"description":"Valid only when `responsive` is true."}}},"examples":{"run":{"value":{"data":{"invoiceId":"INV-2026-0042"},"version":3,"timeoutSeconds":60,"responsive":true,"maxWaitSeconds":10}}}}}},"responses":{"200":{"description":"Run reached a terminal state within the requested bounded wait.","headers":{"Location":{"description":"Public URL of the created resource.","schema":{"type":"string"},"example":"/api/v2/functions/v2/741"},"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["run"],"properties":{"run":{"allOf":[{"type":"object","required":["id","origin","status","caller","attemptCount","maximumAttempts","timeoutSeconds","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"functionId":{"type":"integer","format":"int32","minimum":1,"description":"Present when the Run is associated with a Function."},"origin":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","version"],"properties":{"type":{"type":"string","enum":["version"]},"version":{"type":"integer","format":"int32","minimum":1}}},{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"type":"string","enum":["inline"]}}}]},"status":{"type":"string","enum":["queued","provisioning","compiling","running","terminating","succeeded","failed","timed_out","cancelled"]},"consumption":{"type":"object","description":"Committed Run consumption, including Endpoint calls. Omitted before settlement or when historical consumption is unknown.","required":["centicredits"],"properties":{"centicredits":{"type":"integer","minimum":0,"description":"One credit equals 100 centicredits."}}},"caller":{"type":"object","additionalProperties":false,"required":["type","label"],"properties":{"type":{"type":"string","enum":["user","service","system"]},"id":{"type":"string","nullable":true},"label":{"type":"string"}}},"attemptCount":{"type":"integer","minimum":1},"maximumAttempts":{"type":"integer","minimum":1,"maximum":3},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":300},"error":{"type":"object","additionalProperties":false,"required":["code","message","category","sideEffectPossible"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"category":{"type":"string","enum":["customer_error","customer_limit","platform_failure"]},"sideEffectPossible":{"type":"boolean"}}},"createdAt":{"type":"string","format":"date-time"},"queuedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},{"type":"object","required":["attempts","endpointCalls"],"properties":{"attempts":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["number","status","startedAt"],"properties":{"number":{"type":"integer","minimum":1,"maximum":3},"status":{"type":"string","enum":["provisioning","compiling","running","terminating","succeeded","failed","timed_out","cancelled"]},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"failureClass":{"type":"string","enum":["customer_error","customer_limit","platform_failure"]}}}},"endpointCalls":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["sequence","appName","appVersion","endpointName","outcome","durationMs","attempts","ambiguous"],"properties":{"sequence":{"type":"integer","minimum":1},"appName":{"type":"string"},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string"},"outcome":{"type":"string","enum":["succeeded","failed","ambiguous"]},"durationMs":{"type":"integer","minimum":0},"attempts":{"type":"integer","minimum":1},"ambiguous":{"type":"boolean"}}}},"output":{"allOf":[{"nullable":true,"description":"Any valid JSON value up to 64 levels and 10,000 nodes before schema evaluation."}],"description":"Validated JSON returned by a succeeded Run."}}}]}}},"examples":{"completed":{"value":{"run":{"id":"018f4cf5-973a-7a65-91a5-318a4df9f782","functionId":741,"origin":{"type":"version","version":3},"status":"succeeded","caller":{"type":"user","id":"1001","label":"Ada Lovelace"},"attemptCount":1,"maximumAttempts":3,"timeoutSeconds":60,"attempts":[],"endpointCalls":[],"output":{"accepted":true},"createdAt":"2026-09-21T13:00:00.000Z","startedAt":"2026-09-21T13:00:02.000Z","completedAt":"2026-09-21T13:00:04.000Z","updatedAt":"2026-09-21T13:00:04.000Z"}}}}}}},"202":{"description":"Run accepted and still nonterminal.","headers":{"Location":{"description":"Public URL of the created resource.","schema":{"type":"string"},"example":"/api/v2/functions/v2/741"},"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["run"],"properties":{"run":{"type":"object","required":["id","origin","status","caller","attemptCount","maximumAttempts","timeoutSeconds","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"functionId":{"type":"integer","format":"int32","minimum":1,"description":"Present when the Run is associated with a Function."},"origin":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","version"],"properties":{"type":{"type":"string","enum":["version"]},"version":{"type":"integer","format":"int32","minimum":1}}},{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"type":"string","enum":["inline"]}}}]},"status":{"type":"string","enum":["queued","provisioning","compiling","running","terminating","succeeded","failed","timed_out","cancelled"]},"consumption":{"type":"object","description":"Committed Run consumption, including Endpoint calls. Omitted before settlement or when historical consumption is unknown.","required":["centicredits"],"properties":{"centicredits":{"type":"integer","minimum":0,"description":"One credit equals 100 centicredits."}}},"caller":{"type":"object","additionalProperties":false,"required":["type","label"],"properties":{"type":{"type":"string","enum":["user","service","system"]},"id":{"type":"string","nullable":true},"label":{"type":"string"}}},"attemptCount":{"type":"integer","minimum":1},"maximumAttempts":{"type":"integer","minimum":1,"maximum":3},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":300},"error":{"type":"object","additionalProperties":false,"required":["code","message","category","sideEffectPossible"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"category":{"type":"string","enum":["customer_error","customer_limit","platform_failure"]},"sideEffectPossible":{"type":"boolean"}}},"createdAt":{"type":"string","format":"date-time"},"queuedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"accepted":{"value":{"run":{"id":"018f4cf5-973a-7a65-91a5-318a4df9f782","functionId":741,"origin":{"type":"version","version":3},"status":"queued","caller":{"type":"user","id":"1001","label":"Ada Lovelace"},"attemptCount":1,"maximumAttempts":3,"timeoutSeconds":60,"createdAt":"2026-09-21T13:00:00.000Z","updatedAt":"2026-09-21T13:00:00.000Z"}}}}}}},"400":{"description":"Request validation failed.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM005","message":"teamId must be a positive integer."}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC404","message":"Function resource not found."}}}},"409":{"description":"The request conflicts with current resource state.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC409","message":"The request conflicts with the current Function state."}}}},"422":{"description":"Static preflight or semantic validation rejected the request.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC422","message":"Static preflight rejected the submitted content.","detail":{"reason":"sts_validation_failed"}}}}},"429":{"description":"Run admission or event streaming capacity is temporarily exhausted.","headers":{"Retry-After":{"description":"Seconds before the caller should retry.","schema":{"type":"integer","minimum":1},"example":5},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC429","message":"Functions capacity is temporarily unavailable."}}}},"503":{"description":"A required downstream dependency is temporarily unavailable.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC503","message":"Static preflight is temporarily unavailable."}}}}}}},"/functions/v2/runs/inline":{"parameters":[{"name":"teamId","in":"query","required":true,"description":"Team that owns the Function collection.","schema":{"type":"integer","format":"int32","minimum":1},"example":42}],"post":{"operationId":"createInlineFunctionV2Run","x-internal":true,"tags":["Functions V2 / Runs"],"summary":"Create a Run from inline source","description":"Shared arbitrary-code admission route for authorized browser-session and API-token callers;\nit is not restricted to internal products. API tokens require `functions:write`.\nSession-authenticated mutations require the corresponding product authorization and CSRF.\n\nAdmission creates an immutable, Run-owned snapshot of the submitted source, schemas,\nConnection selections, and Endpoint declarations without publishing a Function version.\nOptional `functionId` associates the Run with an authorized Function in the requested Team;\nassociated Runs appear in that Function's history, while unassociated Runs remain accessible\nby Run ID. The server treats all submitted source as hostile and applies authorization,\nsource bounds, and Run-admission quotas.\n","security":[{"token":["functions:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["content"],"allOf":[{"anyOf":[{"required":["responsive"],"properties":{"responsive":{"enum":[true]}}},{"not":{"required":["maxWaitSeconds"]}}]}],"properties":{"functionId":{"type":"integer","format":"int32","minimum":1,"description":"Optional Function association. The Function must belong to the requested Team."},"content":{"type":"object","additionalProperties":false,"required":["source","inputSchema"],"properties":{"source":{"type":"string","description":"UTF-8 TypeScript source. The server enforces the documented source byte limit."},"inputSchema":{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"},"outputSchema":{"allOf":[{"type":"object","maxProperties":64,"additionalProperties":true,"description":"Authoritative client-authored JSON Schema using the bounded Make Functions subset of Draft\n2020-12. `{}` is the explicit permissive schema. Each side is limited to 64 KiB canonical\nUTF-8, 32 expanded levels, 1,000 schema nodes, 500 named properties, 32 total composition\nbranches, and 256 enum values. Schema literals are limited to 32 JSON levels and 10,000 JSON nodes.\nRemote, dynamic, recursive, and non-fragment references are rejected.\n"}],"description":"Optional authoritative output contract. Omission is equivalent to `{}` and is normalized\nbefore validation, hashing, persistence, declaration generation, and execution.\n"},"connections":{"type":"object","description":"Connection label to Make connection ID used by this version.","maxProperties":100,"default":{},"additionalProperties":{"type":"integer","format":"int32","minimum":1}},"endpoints":{"type":"array","description":"App endpoints the Function source may call.","maxItems":100,"default":[],"items":{"type":"object","additionalProperties":false,"description":"An Endpoint the Function source may call, each one declared once. Code calls it in the\nEndpoints SDK's shape with a declared connection label, for example\n`make.endpoints.salesforce.v4.getCustomer({ input: { id }, connection: 'crm' })`.\n","required":["alias","appName","appVersion","endpointName"],"properties":{"alias":{"type":"string","minLength":1,"maxLength":128,"description":"Display name of the declaration. Code calls the Endpoint by its app, version and name, never by alias."},"connectionKey":{"type":"string","minLength":1,"maxLength":128,"description":"Label of the declared connection the editor binds this Endpoint to; its calls pass the same label as `connection`."},"appName":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string","minLength":1,"maxLength":128}}}}}},"data":{"allOf":[{"nullable":true,"description":"Any valid JSON value up to 64 levels and 10,000 nodes before schema evaluation."}],"description":"Optional argument passed to `main()`."},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":300,"default":300},"responsive":{"type":"boolean","default":false},"maxWaitSeconds":{"type":"integer","minimum":1,"maximum":60,"default":60,"description":"Valid only when `responsive` is true."}}},"examples":{"unassociated":{"value":{"content":{"source":"export default async function main(input: Input): Promise<Output> {\n  return input;\n}\n","inputSchema":{},"outputSchema":{},"connections":{},"endpoints":[]},"data":{"invoiceId":"INV-2026-0042"},"timeoutSeconds":60,"responsive":true,"maxWaitSeconds":10}},"associated":{"value":{"functionId":741,"content":{"source":"export default async function main(input: Input): Promise<Output> {\n  return \"ok\";\n}\n","inputSchema":{},"outputSchema":{}}}}}}}},"responses":{"200":{"description":"Inline Run reached a terminal state within the requested bounded wait.","headers":{"Location":{"description":"Public URL of the created resource.","schema":{"type":"string"},"example":"/api/v2/functions/v2/741"},"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["run"],"properties":{"run":{"allOf":[{"type":"object","required":["id","origin","status","caller","attemptCount","maximumAttempts","timeoutSeconds","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"functionId":{"type":"integer","format":"int32","minimum":1,"description":"Present when the Run is associated with a Function."},"origin":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","version"],"properties":{"type":{"type":"string","enum":["version"]},"version":{"type":"integer","format":"int32","minimum":1}}},{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"type":"string","enum":["inline"]}}}]},"status":{"type":"string","enum":["queued","provisioning","compiling","running","terminating","succeeded","failed","timed_out","cancelled"]},"consumption":{"type":"object","description":"Committed Run consumption, including Endpoint calls. Omitted before settlement or when historical consumption is unknown.","required":["centicredits"],"properties":{"centicredits":{"type":"integer","minimum":0,"description":"One credit equals 100 centicredits."}}},"caller":{"type":"object","additionalProperties":false,"required":["type","label"],"properties":{"type":{"type":"string","enum":["user","service","system"]},"id":{"type":"string","nullable":true},"label":{"type":"string"}}},"attemptCount":{"type":"integer","minimum":1},"maximumAttempts":{"type":"integer","minimum":1,"maximum":3},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":300},"error":{"type":"object","additionalProperties":false,"required":["code","message","category","sideEffectPossible"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"category":{"type":"string","enum":["customer_error","customer_limit","platform_failure"]},"sideEffectPossible":{"type":"boolean"}}},"createdAt":{"type":"string","format":"date-time"},"queuedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},{"type":"object","required":["attempts","endpointCalls"],"properties":{"attempts":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["number","status","startedAt"],"properties":{"number":{"type":"integer","minimum":1,"maximum":3},"status":{"type":"string","enum":["provisioning","compiling","running","terminating","succeeded","failed","timed_out","cancelled"]},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"failureClass":{"type":"string","enum":["customer_error","customer_limit","platform_failure"]}}}},"endpointCalls":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["sequence","appName","appVersion","endpointName","outcome","durationMs","attempts","ambiguous"],"properties":{"sequence":{"type":"integer","minimum":1},"appName":{"type":"string"},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string"},"outcome":{"type":"string","enum":["succeeded","failed","ambiguous"]},"durationMs":{"type":"integer","minimum":0},"attempts":{"type":"integer","minimum":1},"ambiguous":{"type":"boolean"}}}},"output":{"allOf":[{"nullable":true,"description":"Any valid JSON value up to 64 levels and 10,000 nodes before schema evaluation."}],"description":"Validated JSON returned by a succeeded Run."}}}]}}},"examples":{"completed":{"value":{"run":{"id":"018f4cf5-973a-7a65-91a5-318a4df9f782","functionId":741,"origin":{"type":"version","version":3},"status":"succeeded","caller":{"type":"user","id":"1001","label":"Ada Lovelace"},"attemptCount":1,"maximumAttempts":3,"timeoutSeconds":60,"attempts":[],"endpointCalls":[],"output":{"accepted":true},"createdAt":"2026-09-21T13:00:00.000Z","startedAt":"2026-09-21T13:00:02.000Z","completedAt":"2026-09-21T13:00:04.000Z","updatedAt":"2026-09-21T13:00:04.000Z"}}}}}}},"202":{"description":"Inline Run accepted.","headers":{"Location":{"description":"Public URL of the created resource.","schema":{"type":"string"},"example":"/api/v2/functions/v2/741"},"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["run"],"properties":{"run":{"type":"object","required":["id","origin","status","caller","attemptCount","maximumAttempts","timeoutSeconds","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"functionId":{"type":"integer","format":"int32","minimum":1,"description":"Present when the Run is associated with a Function."},"origin":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","version"],"properties":{"type":{"type":"string","enum":["version"]},"version":{"type":"integer","format":"int32","minimum":1}}},{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"type":"string","enum":["inline"]}}}]},"status":{"type":"string","enum":["queued","provisioning","compiling","running","terminating","succeeded","failed","timed_out","cancelled"]},"consumption":{"type":"object","description":"Committed Run consumption, including Endpoint calls. Omitted before settlement or when historical consumption is unknown.","required":["centicredits"],"properties":{"centicredits":{"type":"integer","minimum":0,"description":"One credit equals 100 centicredits."}}},"caller":{"type":"object","additionalProperties":false,"required":["type","label"],"properties":{"type":{"type":"string","enum":["user","service","system"]},"id":{"type":"string","nullable":true},"label":{"type":"string"}}},"attemptCount":{"type":"integer","minimum":1},"maximumAttempts":{"type":"integer","minimum":1,"maximum":3},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":300},"error":{"type":"object","additionalProperties":false,"required":["code","message","category","sideEffectPossible"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"category":{"type":"string","enum":["customer_error","customer_limit","platform_failure"]},"sideEffectPossible":{"type":"boolean"}}},"createdAt":{"type":"string","format":"date-time"},"queuedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"accepted":{"value":{"run":{"id":"018f4cf5-973a-7a65-91a5-318a4df9f783","origin":{"type":"inline"},"status":"queued","caller":{"type":"user","id":"1001","label":"Ada Lovelace"},"attemptCount":1,"maximumAttempts":3,"timeoutSeconds":60,"createdAt":"2026-09-21T13:01:00.000Z","updatedAt":"2026-09-21T13:01:00.000Z"}}}}}}},"400":{"description":"Request validation failed.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM005","message":"teamId must be a positive integer."}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC404","message":"Function resource not found."}}}},"422":{"description":"Static preflight or semantic validation rejected the request.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC422","message":"Static preflight rejected the submitted content.","detail":{"reason":"sts_validation_failed"}}}}},"429":{"description":"Run admission or event streaming capacity is temporarily exhausted.","headers":{"Retry-After":{"description":"Seconds before the caller should retry.","schema":{"type":"integer","minimum":1},"example":5},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC429","message":"Functions capacity is temporarily unavailable."}}}},"503":{"description":"A required downstream dependency is temporarily unavailable.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC503","message":"Static preflight is temporarily unavailable."}}}}}}},"/functions/v2/runs/{runId}":{"parameters":[{"name":"runId","in":"path","required":true,"description":"Run UUID.","schema":{"type":"string","format":"uuid"},"example":"018f4cf5-973a-7a65-91a5-318a4df9f782"}],"get":{"operationId":"getFunctionV2Run","x-internal":true,"tags":["Functions V2 / Runs"],"summary":"Get a Run","description":"Poll this resource for lifecycle status. It returns immutable admission metadata, attempt\nsummaries, terminal error information, a redacted Endpoint-call projection, and validated\nterminal output for succeeded Runs. It never returns source, emitted JavaScript, provider\nidentifiers, raw Endpoint bodies, or Run input.\n","security":[{"token":["functions:read"]}],"responses":{"200":{"description":"Run detail.","headers":{"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["run"],"properties":{"run":{"allOf":[{"type":"object","required":["id","origin","status","caller","attemptCount","maximumAttempts","timeoutSeconds","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"functionId":{"type":"integer","format":"int32","minimum":1,"description":"Present when the Run is associated with a Function."},"origin":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","version"],"properties":{"type":{"type":"string","enum":["version"]},"version":{"type":"integer","format":"int32","minimum":1}}},{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"type":"string","enum":["inline"]}}}]},"status":{"type":"string","enum":["queued","provisioning","compiling","running","terminating","succeeded","failed","timed_out","cancelled"]},"consumption":{"type":"object","description":"Committed Run consumption, including Endpoint calls. Omitted before settlement or when historical consumption is unknown.","required":["centicredits"],"properties":{"centicredits":{"type":"integer","minimum":0,"description":"One credit equals 100 centicredits."}}},"caller":{"type":"object","additionalProperties":false,"required":["type","label"],"properties":{"type":{"type":"string","enum":["user","service","system"]},"id":{"type":"string","nullable":true},"label":{"type":"string"}}},"attemptCount":{"type":"integer","minimum":1},"maximumAttempts":{"type":"integer","minimum":1,"maximum":3},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":300},"error":{"type":"object","additionalProperties":false,"required":["code","message","category","sideEffectPossible"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"category":{"type":"string","enum":["customer_error","customer_limit","platform_failure"]},"sideEffectPossible":{"type":"boolean"}}},"createdAt":{"type":"string","format":"date-time"},"queuedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},{"type":"object","required":["attempts","endpointCalls"],"properties":{"attempts":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["number","status","startedAt"],"properties":{"number":{"type":"integer","minimum":1,"maximum":3},"status":{"type":"string","enum":["provisioning","compiling","running","terminating","succeeded","failed","timed_out","cancelled"]},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"failureClass":{"type":"string","enum":["customer_error","customer_limit","platform_failure"]}}}},"endpointCalls":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["sequence","appName","appVersion","endpointName","outcome","durationMs","attempts","ambiguous"],"properties":{"sequence":{"type":"integer","minimum":1},"appName":{"type":"string"},"appVersion":{"type":"integer","minimum":1},"endpointName":{"type":"string"},"outcome":{"type":"string","enum":["succeeded","failed","ambiguous"]},"durationMs":{"type":"integer","minimum":0},"attempts":{"type":"integer","minimum":1},"ambiguous":{"type":"boolean"}}}},"output":{"allOf":[{"nullable":true,"description":"Any valid JSON value up to 64 levels and 10,000 nodes before schema evaluation."}],"description":"Validated JSON returned by a succeeded Run."}}}]}}},"examples":{"detail":{"value":{"run":{"id":"018f4cf5-973a-7a65-91a5-318a4df9f782","functionId":741,"origin":{"type":"version","version":3},"status":"succeeded","caller":{"type":"user","id":"1001","label":"Ada Lovelace"},"attemptCount":1,"maximumAttempts":3,"timeoutSeconds":60,"attempts":[{"number":1,"status":"succeeded","startedAt":"2026-09-21T13:00:01.000Z","completedAt":"2026-09-21T13:00:04.000Z"}],"endpointCalls":[{"sequence":1,"appName":"salesforce","appVersion":4,"endpointName":"getCustomer","outcome":"succeeded","durationMs":180,"attempts":1,"ambiguous":false}],"createdAt":"2026-09-21T13:00:00.000Z","startedAt":"2026-09-21T13:00:02.000Z","completedAt":"2026-09-21T13:00:04.000Z","updatedAt":"2026-09-21T13:00:04.000Z"}}}}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC404","message":"Function resource not found."}}}}}}},"/functions/v2/runs/{runId}/cancellation":{"parameters":[{"name":"runId","in":"path","required":true,"description":"Run UUID.","schema":{"type":"string","format":"uuid"},"example":"018f4cf5-973a-7a65-91a5-318a4df9f782"}],"post":{"operationId":"cancelFunctionV2Run","x-internal":true,"tags":["Functions V2 / Runs"],"summary":"Cancel a Run","description":"Requests cancellation idempotently. Queued work is stopped, new Endpoint calls are blocked,\nrunning code is asked to stop, and the active sandbox is terminated. Cancellation cannot\nundo an external change already accepted by another system.\n","security":[{"token":["functions:write"]}],"responses":{"200":{"description":"Run was already cancelled.","headers":{"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["run"],"properties":{"run":{"type":"object","required":["id","origin","status","caller","attemptCount","maximumAttempts","timeoutSeconds","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"functionId":{"type":"integer","format":"int32","minimum":1,"description":"Present when the Run is associated with a Function."},"origin":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","version"],"properties":{"type":{"type":"string","enum":["version"]},"version":{"type":"integer","format":"int32","minimum":1}}},{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"type":"string","enum":["inline"]}}}]},"status":{"type":"string","enum":["queued","provisioning","compiling","running","terminating","succeeded","failed","timed_out","cancelled"]},"consumption":{"type":"object","description":"Committed Run consumption, including Endpoint calls. Omitted before settlement or when historical consumption is unknown.","required":["centicredits"],"properties":{"centicredits":{"type":"integer","minimum":0,"description":"One credit equals 100 centicredits."}}},"caller":{"type":"object","additionalProperties":false,"required":["type","label"],"properties":{"type":{"type":"string","enum":["user","service","system"]},"id":{"type":"string","nullable":true},"label":{"type":"string"}}},"attemptCount":{"type":"integer","minimum":1},"maximumAttempts":{"type":"integer","minimum":1,"maximum":3},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":300},"error":{"type":"object","additionalProperties":false,"required":["code","message","category","sideEffectPossible"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"category":{"type":"string","enum":["customer_error","customer_limit","platform_failure"]},"sideEffectPossible":{"type":"boolean"}}},"createdAt":{"type":"string","format":"date-time"},"queuedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"cancelled":{"value":{"run":{"id":"018f4cf5-973a-7a65-91a5-318a4df9f782","functionId":741,"origin":{"type":"version","version":3},"status":"cancelled","caller":{"type":"user","id":"1001","label":"Ada Lovelace"},"attemptCount":1,"maximumAttempts":3,"timeoutSeconds":60,"createdAt":"2026-09-21T13:00:00.000Z","startedAt":"2026-09-21T13:00:02.000Z","completedAt":"2026-09-21T13:00:04.000Z","updatedAt":"2026-09-21T13:00:04.000Z"}}}}}}},"202":{"description":"Cancellation accepted or still pending.","headers":{"Cache-Control":{"description":"Prevents storage of source-bearing or user-specific responses.","schema":{"type":"string","enum":["no-store"]},"example":"no-store"},"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["run"],"properties":{"run":{"type":"object","required":["id","origin","status","caller","attemptCount","maximumAttempts","timeoutSeconds","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"functionId":{"type":"integer","format":"int32","minimum":1,"description":"Present when the Run is associated with a Function."},"origin":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","version"],"properties":{"type":{"type":"string","enum":["version"]},"version":{"type":"integer","format":"int32","minimum":1}}},{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"type":"string","enum":["inline"]}}}]},"status":{"type":"string","enum":["queued","provisioning","compiling","running","terminating","succeeded","failed","timed_out","cancelled"]},"consumption":{"type":"object","description":"Committed Run consumption, including Endpoint calls. Omitted before settlement or when historical consumption is unknown.","required":["centicredits"],"properties":{"centicredits":{"type":"integer","minimum":0,"description":"One credit equals 100 centicredits."}}},"caller":{"type":"object","additionalProperties":false,"required":["type","label"],"properties":{"type":{"type":"string","enum":["user","service","system"]},"id":{"type":"string","nullable":true},"label":{"type":"string"}}},"attemptCount":{"type":"integer","minimum":1},"maximumAttempts":{"type":"integer","minimum":1,"maximum":3},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":300},"error":{"type":"object","additionalProperties":false,"required":["code","message","category","sideEffectPossible"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"category":{"type":"string","enum":["customer_error","customer_limit","platform_failure"]},"sideEffectPossible":{"type":"boolean"}}},"createdAt":{"type":"string","format":"date-time"},"queuedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"pending":{"value":{"run":{"id":"018f4cf5-973a-7a65-91a5-318a4df9f782","functionId":741,"origin":{"type":"version","version":3},"status":"terminating","caller":{"type":"user","id":"1001","label":"Ada Lovelace"},"attemptCount":1,"maximumAttempts":3,"timeoutSeconds":60,"createdAt":"2026-09-21T13:00:00.000Z","startedAt":"2026-09-21T13:00:02.000Z","updatedAt":"2026-09-21T13:00:03.000Z"}}}}}}},"401":{"description":"Authentication is missing or invalid.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM102","message":"Authentication required."}}}},"403":{"description":"The caller is authenticated but cannot perform the requested action.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"IM001","message":"Access denied."}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC404","message":"Function resource not found."}}}},"409":{"description":"The request conflicts with current resource state.","headers":{"X-Request-ID":{"description":"Correlation identifier for the request.","schema":{"type":"string"},"example":"01J8G4M8Z2KJ5N6Q7R8S9T0VWX"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"description":"Human-readable or structured error details.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]}},"example":{"detail":"Function resource not found.","code":"SC404","message":"Function resource not found."}},"example":{"code":"SC409","message":"The request conflicts with the current Function state."}}}}}}},"/functions":{"get":{"tags":["Custom functions"],"summary":"List custom functions","description":"Retrieves a list of custom functions available in the team. The response contains `id`, `name`, `description` and a brief updates history of all custom functions available in the team.\n\nCheck availability of the custom functions feature with the API call `GET /organizations/{organizationId}` for the organization to which the team belongs. If the response contains `\"customFunctions\": true` pair in the `license` object then you have access to the custom functions feature.\n\nRefer to the [Make pricing page](https://www.make.com/en/help/general/pricing-parameters) for Make pricing plans overview.","security":[{"token":["function:read"]}],"parameters":[{"name":"teamId","in":"query","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":11},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"functions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"args":{"type":"string"},"description":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"},"createdByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"createdAt":{"type":"string","format":"date-time"}}}}}},"example":{"functions":[{"id":2,"name":"checkType","args":"(param)","description":"Returns the data type of the argument.","updatedAt":"2023-02-06T09:10:40.643Z","createdByUser":{"id":22,"name":"John Doe","email":"john@doe.com"},"createdAt":"2023-02-06T09:09:16.063Z"},{"id":3,"name":"numberOfWorkingDays","args":"()","description":"Calculate how many working days are between the two provided dates.","updatedAt":"2023-01-25T12:49:51.601Z","createdByUser":{"id":22,"name":"John Doe","email":"john@doe.com"},"createdAt":"2023-01-25T12:49:51.601Z"}]}}}}}},"post":{"tags":["Custom functions"],"summary":"Create a custom function","description":"Creates a custom function. Specify function `name`, `description` and `code` in the request body.\n\nYou cannot use a JavaScript reserved word for the function `name`. Check the [list of JavaScript reserved words](https://www.w3schools.com/js/js_reserved.asp).\n\nMake sure to use the same function name in the `name` field and in the function's `code`. Otherwise, you get the IM005 error.\n\nMake validates the custom function's code first. You get an IM005 error if the code validation fails. The validation might fail because of a syntax error in the function's code or when the code uses a JavaScript feature that Make doesn't support. Check the [custom functions limitations](https://www.make.com/en/help/functions/custom-functions#limitations-of-custom-functions) in the Make Help center.\n\nCheck availability of the custom functions feature with the API call `GET /organizations/{organizationId}` for the organization to which the team belongs. If the response contains `\"customFunctions\": true` pair in the `license` object then you have access to the custom functions feature.\n\nRefer to the [Make pricing page](https://www.make.com/en/help/general/pricing-parameters) for Make pricing plans overview.","security":[{"token":["functions:write"]}],"parameters":[{"name":"teamId","in":"query","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the custom function."},"description":{"type":"string","description":"The description of the custom function."},"code":{"type":"string","description":"The code of the custom function."}},"required":["name","description"]},"example":{"name":"symmetricDifference","description":"A function which returns an array with items unique across two arrays.","code":"function symmetricDifference(array1, array2){difference = array1.filter(x => !array2.includes(x)).concat(array2.filter(x => !array1.includes(x))) return difference}"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"function":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"code":{"type":"string"},"args":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"},"createdByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"createdAt":{"type":"string","format":"date-time"}}}}},"example":{"function":{"id":16,"name":"symmetricDifference","description":"A function which returns an array with items unique across two arrays.","code":"function symmetricDifference(array1, array2){difference = array1.filter(x => !array2.includes(x)).concat(array2.filter(x => !array1.includes(x))) return difference}","args":"(array1, array2)","updatedAt":"2023-02-06T14:09:37.834Z","createdAt":"2023-02-06T14:09:37.834Z","createdByUser":{"id":22,"name":"John Doe","email":"john@doe.com"}}}}}}}}},"/functions/eval":{"post":{"tags":["Custom functions"],"summary":"Check custom function code","description":"Checks the custom functions code. The response contains information whether Make validated the custom functions code successfully or whether there was an error.\n\nThe code validation might fail because of an syntax error in the function's code or when the code uses a JavaScript feature that Make doesn't support. Check the [custom functions limitations](https://www.make.com/en/help/functions/custom-functions#limitations-of-custom-functions) in the Make Help center.\n\nCheck availability of the custom functions feature with the API call `GET /organizations/{organizationId}` for the organization to which the team belongs. If the response contains `\"customFunctions\": true` pair in the `license` object then you have access to the custom functions feature.\n\nRefer to the [Make pricing page](https://www.make.com/en/help/general/pricing-parameters) for Make pricing plans overview.","security":[{"token":["functions:write"]}],"parameters":[{"name":"teamId","in":"query","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"The code of the custom function."}},"required":["code"]},"example":{"code":"function checkType(arg) {return (typeof(arg))}"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}},"example":{"success":true,"error":null}}}}}}},"/functions/{functionId}":{"get":{"tags":["Custom functions"],"summary":"Custom function detail","description":"Gets detailed information about a custom function. The response contains function `name`, `code`,  a list of scenarios which use the custom function and the custom function's history of updates.","security":[{"token":["functions:read"]}],"parameters":[{"name":"functionId","in":"path","schema":{"type":"integer"},"example":44,"description":"The ID of the custom function.","required":true},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"function":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"code":{"type":"string"},"args":{"type":"string"},"scenarios":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"updatedAt":{"type":"string","format":"date-time"},"createdByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"createdAt":{"type":"string","format":"date-time"}}}}},"example":{"function":{"id":16,"name":"symmetricDifference","description":"A function which returns an array with items unique across two arrays.","code":"function symmetricDifference(array1, array2){difference = array1.filter(x => !array2.includes(x)).concat(array2.filter(x => !array1.includes(x))) return difference}","args":"(array1, array2)","scenarios":[{"id":1052,"name":"Scenario to compare arrays"}],"updatedAt":"2023-02-06T14:09:37.834Z","createdAt":"2023-02-06T14:09:37.834Z","createdByUser":{"id":22,"name":"John Doe","email":"john@doe.com"}}}}}}}},"patch":{"tags":["Custom functions"],"summary":"Update a custom function","description":"Updates custom functions `description` or `code`. You cannot change the `name` of the custom function.\n\nMake sure to use the same function name in the function's `code`. Otherwise, you get an IM005 error.\n\nMake validates the custom function's code first. You get an IM005 error if the code validation fails. The validation might fail because of a syntax error in the function's code or when the code uses a JavaScript feature that Make doesn't support. Check the [custom functions limitations](https://www.make.com/en/help/functions/custom-functions#limitations-of-custom-functions) in the Make Help center.\n","security":[{"token":["functions:write"]}],"parameters":[{"name":"functionId","in":"path","schema":{"type":"integer"},"example":44,"description":"The ID of the custom function.","required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","description":"The description of the custom function. You can use maximum of 128 characters."},"code":{"type":"string","description":"The code of the custom function."}}},"example":{"description":"Greet user instead of greeting the World.","code":"function greeter(name){return concat('Hello ', name)"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"function":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"code":{"type":"string"},"args":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"},"createdByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"createdAt":{"type":"string","format":"date-time"}}}}},"example":{"function":{"id":48,"name":"greeter","description":"Greet user instead of greeting the World.","code":"function greeter(name){return concat('Hello ', name)","args":"(name)","updatedAt":"2023-02-06T14:09:37.834Z","createdAt":"2023-02-06T14:09:37.834Z","createdByUser":{"id":22,"name":"John Doe","email":"john@doe.com"}}}}}}}},"delete":{"tags":["Custom functions"],"summary":"Delete custom function","description":"Deletes the custom function. The response contains information whether the custom function is deleted or not.\n\nIf you or any of your team members use the custom function in a scenario you have to use the `confirmed` parameter to confirm the custom function deletion. Otherwise, you get an error with a list of scenarios that use the custom function.","security":[{"token":["functions:write"]}],"parameters":[{"name":"functionId","in":"path","required":true,"schema":{"type":"integer"},"example":44,"description":"The ID of the custom function."},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true,"description":"Confirms deleting of the custom function. If you are using the custom function in a scenario Make requires the confirmation."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}},"example":{"success":true}}}}}}},"/functions/{functionId}/history":{"get":{"tags":["Custom functions"],"summary":"Custom function updates history","description":"Gets history of updates of the specified custom function. The response contains a list of code changes, the change author and date when the author made the change.","security":[{"token":["functions:read"]}],"parameters":[{"name":"functionId","in":"path","required":true,"schema":{"type":"integer"},"example":44,"description":"The ID of the custom function."},{"name":"teamId","in":"query","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"functionHistory":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"previousCode":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"},"updatedBy":{"type":"string"}}}}}},"example":{"functionHistory":[{"id":1245,"previousCode":"function checkType(param){return typeof(param)}","updatedAt":"2023-02-09T09:13:36.750Z","updatedBy":"John Doe"},{"id":1240,"previousCode":"function checkType(arg){return typeof(arg)}","updatedAt":"2023-02-09T09:12:34.288Z","updatedBy":"John Doe"}]}}}}}}},"/ping":{"get":{"tags":["General"],"summary":"Ping","description":"Pings the Make API service. Successful response contains plain text.","responses":{"200":{"description":"Successful response","content":{"text/plain":{"schema":{"type":"string"},"example":"pong"}}}}}},"/hooks":{"get":{"tags":["Hooks"],"summary":"List hooks","description":"Retrieves a collection of all hooks for a team with a given ID. Returned hooks are sorted by ID in ascending order by default. Use `pg[sortBy]` to sort by `name` or `hookName`.","security":[{"token":["hooks:read"]}],"parameters":[{"name":"teamId","in":"query","schema":{"type":"string"},"required":true,"description":"The unique ID of the team whose hooks will be retrieved.","example":4},{"name":"typeName","in":"query","schema":{"type":"string"},"description":"The hook type. Two native Make hook types are `gateway-webhook` and `gateway-mailhook`.","example":"gateway-webhook"},{"name":"assigned","in":"query","schema":{"type":"boolean"},"description":"Specifies if the hook is assigned to a scenario. If set to `true`, the request will return only the hooks which the `scenarioId` value is not set to null.","example":true},{"name":"viewForScenarioId","in":"query","schema":{"type":"integer"},"description":"This parameter shows only the hooks that can be used by a scenario with a specific ID, which means hooks that are not assigned to another scenario yet and the hook that is already assigned to this scenario. This can be useful because Make allows assigning any hook to only one scenario. If this parameter is set the `assigned` parameter is ignored.","example":123}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hooks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"udid":{"type":"string"},"type":{"type":"string"},"packageName":{"type":"string"},"theme":{"type":"string","format":"color"},"flags":{"type":"object","properties":{"form":{"type":"boolean"}}},"editable":{"type":"boolean"},"queueCount":{"type":"integer"},"queueLimit":{"type":"integer"},"enabled":{"type":"boolean"},"gone":{"type":"boolean"},"typeName":{"type":"string"},"data":{"type":"object","additionalProperties":true,"properties":{"headers":{"type":"boolean"},"method":{"type":"boolean"},"stringify":{"type":"boolean"},"teamId":{"type":"integer"},"ip":{"type":"string","format":"ipv6"},"udt":{"type":"integer"}}},"scenarioId":{"type":"integer"},"url":{"type":"string","format":"uri"}}}}}},"example":{"hooks":[{"id":11,"name":"My gateway-webhook webhook 1","teamId":4,"udid":"1gqnexkk1vwxg2wpj39kg30pzp6uhe7h","type":"web","packageName":null,"theme":"#c73a63","editable":true,"queueCount":0,"queueLimit":10000,"enabled":true,"gone":false,"typeName":"gateway-webhook","data":{"headers":false,"method":false,"stringify":false},"scenarioId":1,"url":"https://local.make.cloud/wh/1gqnexkk1vwxg2wpj39kg30pzp6uhe7h"},{"id":58,"name":"Test 1","teamId":4,"udid":"d4ezzfwgyav7qaukv8dbh3l21eru0fld","type":"web","packageName":null,"theme":"#c73a63","editable":true,"queueCount":0,"queueLimit":10000,"enabled":true,"gone":false,"typeName":"gateway-webhook","data":{"ip":null,"udt":null,"headers":false,"method":false,"stringify":false,"teamId":4},"scenarioId":112,"url":"https://local.make.cloud/wh/d4ezzfwgyav7qaukv8dbh3l21eru0fld"}]}}}}}},"post":{"tags":["Hooks"],"summary":"Create hook","description":"Creates a new hook with data passed in the request body. In the response, it returns all details of the created hook.","security":[{"token":["hooks:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the hook. The name must be at most 128 characters long and does not need to be unique."},"teamId":{"type":"string","description":"The unique ID of the team in which a hook will be created."},"typeName":{"type":"string","description":"The hook type strictly related to the app for which the hook was created."},"method":{"type":"boolean","description":"Set the `method` parameter to `true` to add the HTTP method to the request body."},"headers":{"type":"boolean","description":"Set the `headers` parameter to `true` to add headers to the request body."},"stringify":{"type":"boolean","description":"Set the `stringify` parameter to `true` to return JSON payloads as strings."},"__IMTCONN__":{"type":"integer","description":"The unique ID of the connection that will be included in the created hook."},"formId":{"description":"The unique ID of the form that will be included in the created hook.","type":"string"}},"required":["name","teamId","typeName","method","headers","stringify"]},"example":{"name":"Jotform hook 1","teamId":"1","typeName":"jotform","method":false,"headers":false,"stringify":false,"__IMTCONN__":96,"formId":"91282545501352"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hook":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"udid":{"type":"string"},"type":{"type":"string"},"packageName":{"type":"string"},"theme":{"type":"string","format":"color"},"flags":{"type":"object","properties":{"form":{"type":"boolean"}}},"editable":{"type":"boolean"},"queueCount":{"type":"integer"},"queueLimit":{"type":"integer"},"enabled":{"type":"boolean"},"gone":{"type":"boolean"},"typeName":{"type":"string"},"data":{"type":"object","additionalProperties":true,"properties":{"headers":{"type":"boolean"},"method":{"type":"boolean"},"stringify":{"type":"boolean"},"teamId":{"type":"integer"},"ip":{"type":"string","format":"ipv6"},"udt":{"type":"integer"}}},"scenarioId":{"type":"integer"},"url":{"type":"string","format":"uri"}}},"formula":{"type":"object","properties":{"success":{"type":"array","items":{}}}}}},"example":{"hook":{"id":46,"name":"jotform hook 1","teamId":4,"udid":"ukkxypkmrcgufv8xmc9xumbvh8bfh69d","type":"web","packageName":null,"theme":"#ffa500","editable":false,"queueCount":0,"queueLimit":10000,"enabled":true,"gone":false,"typeName":"jotform","data":{"__IMTCONN__":96,"formId":"91282545501352","teamId":4,"url":"https://local.make.cloud/wh/ukkxypkmrcgufv8xmc9xumbvh8bfh69d"},"url":"https://local.make.cloud/wh/ukkxypkmrcgufv8xmc9xumbvh8bfh69d"}}}}}}}},"/hooks/{hookId}":{"get":{"tags":["Hooks"],"summary":"Get hook details","description":"Retrieves details of a hook with a given ID including hooks data.","security":[{"token":["hooks:read"]}],"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hook":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"udid":{"type":"string"},"type":{"type":"string"},"packageName":{"type":"string"},"theme":{"type":"string","format":"color"},"flags":{"type":"object","properties":{"form":{"type":"boolean"}}},"editable":{"type":"boolean"},"queueCount":{"type":"integer"},"queueLimit":{"type":"integer"},"enabled":{"type":"boolean"},"gone":{"type":"boolean"},"typeName":{"type":"string"},"data":{"type":"object","additionalProperties":true,"properties":{"headers":{"type":"boolean"},"method":{"type":"boolean"},"stringify":{"type":"boolean"},"teamId":{"type":"integer"},"ip":{"type":"string","format":"ipv6"},"udt":{"type":"integer"}}},"scenarioId":{"type":"integer"},"url":{"type":"string","format":"uri"}}}}},"example":{"hook":{"id":58,"name":"Test 1","teamId":4,"udid":"d4ezzfwgyav7qaukv8dbh3l21eru0fld","type":"web","packageName":null,"theme":"#c73a63","editable":true,"queueCount":0,"queueLimit":10000,"enabled":true,"gone":false,"typeName":"gateway-webhook","data":{"ip":null,"udt":null,"headers":false,"method":false,"stringify":false,"teamId":4},"scenarioId":112,"url":"https://local.make.cloud/wh/d4ezzfwgyav7qaukv8dbh3l21eru0fld"}}}}}}},"delete":{"tags":["Hooks"],"summary":"Delete hook","description":"Deletes a hook with a given ID and returns the ID in the response.","security":[{"token":["hooks:write"]}],"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"description":"Confirms the deletion if a hook is included in the scenario. Confirmation is required because the scenario will stop working without the hook. If the parameter is missing or it is set to `false` an error code is returned and the resource is not deleted.","example":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hook":{"type":"integer"}}},"example":{"hook":12}}}}}},"patch":{"tags":["Hooks"],"summary":"Update hook","description":"Updates a hook with a given ID by passing new values in the request body. Any property that is not provided will be left unchanged. In the response, it returns all details of the updated hook including properties that were not changed.","security":[{"token":["hooks:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the updated hook. The name must be at most 128 characters long and does not need to be unique."}}},"example":{"name":"My gateway-webhook webhook 1"}}}},"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hook":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"udid":{"type":"string"},"type":{"type":"string"},"packageName":{"type":"string"},"theme":{"type":"string","format":"color"},"flags":{"type":"object","properties":{"form":{"type":"boolean"}}},"editable":{"type":"boolean"},"queueCount":{"type":"integer"},"queueLimit":{"type":"integer"},"enabled":{"type":"boolean"},"gone":{"type":"boolean"},"typeName":{"type":"string"},"data":{"type":"object","additionalProperties":true,"properties":{"headers":{"type":"boolean"},"method":{"type":"boolean"},"stringify":{"type":"boolean"},"teamId":{"type":"integer"},"ip":{"type":"string","format":"ipv6"},"udt":{"type":"integer"}}},"scenarioId":{"type":"integer"},"url":{"type":"string","format":"uri"}}}}},"example":{"hook":{"id":11,"name":"My gateway-webhook webhook 1","teamId":4,"udid":"1gqnexkk1vwxg2wpj39kg30pzp6uhe7h","type":"web","packageName":null,"theme":"#c73a63","editable":true,"queueCount":0,"queueLimit":10000,"enabled":true,"gone":false,"typeName":"gateway-webhook","data":{"headers":false,"method":false,"stringify":false},"url":"https://local.make.cloud/wh/1gqnexkk1vwxg2wpj39kg30pzp6uhe7h"}}}}}}}},"/hooks/{hookId}/ping":{"get":{"tags":["Hooks"],"summary":"Ping hook","description":"Determines if a hook with a given ID is active and retrieves its properties that provide you with the address of the hook and inform if the hook is attached, what is its learning status, and if it was not used for a long time.","security":[{"token":["hooks:read"]}],"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","format":"uri"},"teamId":{"type":"integer","description":"ID of the team that owns the hook."},"attached":{"type":"boolean"},"learning":{"type":"boolean"},"gone":{"type":"boolean"},"dataStructure":{"nullable":true,"type":"array","description":"List of fields parsed from the last received sample. Null if the payload is not yet determined or if the hook is currently in learning mode.","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}}}}}},"example":{"address":"https://local.make.cloud/wh/wmhqi8todng3en3z2tl7ausm15tg33iz","teamId":1,"attached":false,"learning":false,"gone":false,"dataStructure":null}}}}}}},"/hooks/{hookId}/learn-start":{"post":{"tags":["Hooks"],"summary":"Learn start","description":"Starts the process of learning the request body structure by a hook with a given ID. When you send to the hook address a request with data in its body, you can use this endpoint to force the hook to start determining the payload data structure which will later be suggested in the scenario as the output of the hook. The data structure learning process also starts automatically when a new hook is created and stops once the data structure is determined. If you want to stop this process, you can use the [Learn stop](./post--hooks--hookid--learn-stop.md) endpoint.","security":[{"token":["hooks:write"]}],"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}},"example":{"success":true}}}}}}},"/hooks/{hookId}/learn-stop":{"post":{"tags":["Hooks"],"summary":"Learn stop","description":"Stops the process of learning the request body structure by a hook with a given ID. When you send to the hook address a request with data in its body, you can use the [Learn start](./post--hooks--hookid--learn-start.md) endpoint to force the hook to start determining the payload data structure which will later be suggested in the scenario as the output of the hook. The data structure learning process also starts automatically when a new hook is created and stops once the data structure is determined. You can use this endpoint to stop the learning process at any time.","security":[{"token":["hooks:write"]}],"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}},"example":{"success":true}}}}}}},"/hooks/{hookId}/enable":{"post":{"tags":["Hooks"],"summary":"Enable hook","description":"Enables a disabled hook with a given ID. Newly created hooks are enabled by default which means they are ready to accept data. In response, this endpoint returns the confirmation that the hook was successfully enabled.","security":[{"token":["hooks:write"]}],"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}},"example":{"success":true}}}}}}},"/hooks/{hookId}/disable":{"post":{"tags":["Hooks"],"summary":"Disable hook","description":"Disables a hook with a given ID. Newly created hooks are enabled by default which means they are ready to accept data. The disabled hook does not accept any data. This endpoint can be useful when you want to debug the scenario functionality. In response, this endpoint returns the confirmation that the hook was successfully disabled.","security":[{"token":["hooks:write"]}],"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}},"example":{"success":true}}}}}}},"/hooks/{hookId}/set-data":{"post":{"tags":["Hooks"],"summary":"Set hook details","description":"Sets data for a hook with a given ID. Data differ depending on the hook type. It returns the confirmation if the hook data was changed (`true`) or not (`false`).","security":[{"token":["hooks:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"},"example":{"ip":"","udt":"","headers":false,"method":false,"stringify":false}}}},"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"example":{"changed":true}}}}}}},"/hooks/{hookId}/incomings":{"get":{"tags":["Hooks / Incomings"],"summary":"Get webhook queue","description":"Retrieves a list of webhook queue items waiting for processing with the specified webhook. The request response contains:\n\n- the incoming payload hash\n - incoming data scope\n - the size of the data in bytes\n - timestamp of the moment when the data were placed in the processing queue","security":[{"token":["hooks:read"]}],"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"incomings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"scope":{"type":"string"},"size":{"type":"integer"},"created":{"type":"string","format":"date-time"},"data":{"type":"object"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"example":{"incomings":[{"id":"a17c1163d7e04d258fce6bac2c8bd3d6","scope":"hook","size":1,"created":"2021-02-03T09:59:36.260Z"},{"id":"73b56c93f1ff49fe880eeab4fe4c029b","scope":"hook","size":1,"created":"2021-02-03T09:59:38.594Z"}],"pg":{"sortBy":"created","limit":10000,"sortDir":"asc","offset":0}}}}}}},"delete":{"tags":["Hooks / Incomings"],"summary":"Delete items from webhook queue","description":"Deletes items from the processing queue of the specified webhook. Specify the payload ID values that you want to delete in the request body in the `ids` array.\n\nYou can set the `\"all\": true` pair to delete all items from the webhook processing queue. If you use the `\"all\": true` parameter, you have to specify the `confirmed=true` query parameter to confirm the deletion. Otherwise the API call returns the error IM004 (406).\n\nAdd the `exceptIds` array to the request body to specify items you don't want to delete.\n\nThe API call response will contain an error message if some of the specified queue items cannot be deleted. The rest of the specified items will be deleted. Deleting a webhook queue item is not allowed when the item is already being processed by the webhook.","security":[{"token":["hooks:write"]}],"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true,"description":"Set to `true` to confirm deleting the webhook queue items. Otherwise the API call fails with the error IM004 (406)."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"description":"The ID values of the webhook processing queue items that you want to delete. Use the API call `GET /hooks/{hookId}/incomings` to get the ID values of the webhook processing queue items."},"exceptIds":{"type":"array","items":{"type":"string"},"description":"If you are deleting all of the incomplete executions with the `all:true` parameter, you can specify the ID values of the webhook queue items that you want to keep. Use the API call `GET /hooks/{hookId}/incomings` to get the ID values of the webhook queue items."},"all":{"type":"boolean","description":"Set to `true` to delete all items in the webhook processing queue."}}},"examples":{"delete":{"summary":"Delete queue items","description":"Delete webhook queue items.","value":{"ids":["d1efa5318a034d36ad7cbeac543573cf","29d9a7410dff494ab739036f6c332335"],"exceptIds":[],"all":false}},"delete-with-error":{"summary":"Delete error","description":"The API call response will contain an error message if you try to delete webhook queue items that Make is processing at the moment. The rest of the incomplete execution items will be deleted.","value":{"ids":["02731358e5ab4022aff040015a1f1a57","dcf18b685e5c4095b9ee24cea09146d3"],"exceptIds":[],"all":false}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"incomings":{"type":"array","items":{"type":"string"}},"error":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"}}}}},"examples":{"delete":{"value":{"incomings":["d1efa5318a034d36ad7cbeac543573cf","29d9a7410dff494ab739036f6c332335"]}},"delete-with-error":{"value":{"incomings":["02731358e5ab4022aff040015a1f1a57","dcf18b685e5c4095b9ee24cea09146d3"],"error":{"name":"APIError","message":"Some of the incoming messages could not be deleted because they are being processed right now."}}}}}}}}}},"/hooks/{hookId}/incomings/{incomingId}":{"get":{"tags":["Hooks / Incomings"],"summary":"Get webhook queue item detail","description":"Retrieves detail information about the specified webhook queue item. You can get the webhook queue item ID value with the API call `GET /hooks/{hookId}/incomings`.","security":[{"token":["hooks:read"]}],"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654},{"name":"incomingId","in":"path","schema":{"type":"string"},"required":true,"description":"The ID value of the webhook queue item. Get the list of webhook queue items with the API call `GET /hooks/{hookId}/incomings`.","example":"7a567f385d1a4f5ab7bff89162b7605e"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"incoming":{"type":"object","properties":{"id":{"type":"string"},"scope":{"type":"string"},"size":{"type":"integer"},"created":{"type":"string","format":"date-time"},"data":{"type":"object"}}}}},"examples":{"detail-2":{"summary":"Binary queue item","description":"Detail of a webhook queue item that contains data in binary format.","value":{"incoming":{"id":"7a567f385d1a4f5ab7bff89162b7605e","scope":"hook","size":31,"created":"2020-03-05T14:48:10.537Z","data":{"value":"IMTBuffer(22, binary, d4cf3d1cbf035278e7a1a909e71354d7a0387db9): 7b0a20202020226e616d65223a202274657374220a7d"}}}},"detail-1":{"summary":"JSON queue item","description":"Detail of a webhook queue item that contains data in the JSON data format.","value":{"incoming":{"id":"8d88f6f5b0484908890ef11fe7e5bf63","scope":"hook","size":11,"created":"2020-03-05T14:52:01.359Z","data":{"name":"test"}}}}}}}}}}},"/hooks/{hookId}/incomings/stats":{"get":{"tags":["Hooks / Incomings"],"summary":"Get webhook queue stats","description":"Gets webhook processing queue stats. The response contains the number of items in the webhook queue and the webhook queue limit.","security":[{"token":["hooks:read"]}],"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"incomingStat":{"type":"object","properties":{"queue":{"type":"integer"},"limit":{"type":"integer"},"enabled":{"type":"boolean"}}}}},"example":{"incomingStat":{"queue":2,"limit":10000,"enabled":true}}}}}}}},"/hooks/{hookId}/logs":{"get":{"tags":["Hooks / Logs"],"summary":"Get webhook logs","description":"Retrieves a list of the specified webhook execution logs. Use the `to` and `from` parameters to filter the returned logs. The response contains:\n\n- `statusId`: the status of the webhook execution; `1` means successful execution, `3` means failed execution\n - `loggedAt`: the moment when Make created the log\n - `id`: the ID of the webhook execution log","security":[{"token":["hooks:read"]}],"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654},{"name":"to","in":"query","schema":{"type":"integer"},"example":1663495749015,"description":"Limits data in the response to entries older than the specified timestamp. Use the [UNIX timestamp](https://en.wikipedia.org/wiki/Unix_time) format in milliseconds."},{"name":"from","in":"query","schema":{"type":"integer"},"example":1663495749015,"description":"Limits data in the response to entries newer than the specified timestamp. Use the [UNIX timestamp](https://en.wikipedia.org/wiki/Unix_time) format in milliseconds."},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hookLogs":{"type":"array","items":{"type":"object","properties":{"statusId":{"type":"integer"},"parser":{"type":"string"},"replayable":{"type":"boolean"},"sizes":{"type":"object","properties":{"before":{"type":"integer"},"after":{"type":"integer"}}},"loggedAt":{"type":"string","format":"date-time"},"udids":{"type":"array","items":{"type":"string"}},"typeId":{"type":"integer"},"id":{"type":"integer"},"appParser":{"type":"string"},"imtId":{"type":"string"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"example":{"hookLogs":[{"statusId":1,"parser":"gateway-webhook","replayable":true,"sizes":{"before":169,"after":169},"loggedAt":"2022-09-01T13:37:19.344Z","udids":["1oknbf9q7ctpjwrych332ump3ny4d66s"],"typeId":3,"id":"89ea4412db0119b205daf41c84eb2160","appParser":null,"imtId":"1662039439344_N1ZF-YIBperJkDkkOJFc"},{"statusId":3,"parser":"gateway-webhook","replayable":true,"sizes":{"before":589,"after":589},"loggedAt":"2022-09-01T13:36:19.344Z","udids":["1oknbf9q7ctpjwrych332ump3ny4d66s"],"typeId":3,"id":"89ea4412db0119b205daf41c84eb1020","appParser":null,"imtId":"2662039439344_N1ZF-YIBperJkDkkOkUv"}],"pg":{"sortBy":"loggedAt","limit":25,"sortDir":"desc","offset":0}}}}}}}},"/hooks/{hookId}/logs/{logId}":{"get":{"tags":["Hooks / Logs"],"summary":"Get webhook execution detail","description":"Retrieves the specified webhook execution log. The response contains:\n\n- `statusId`: the status of the webhook execution; `1` means successful execution, `3` means failed execution\n - `loggedAt`: the moment when Make created the log\n - `id`: the ID of the webhook execution log\n - `data`: information about the request, header, and payload sent to the webhook.\n\nSome webhooks don't return the `data` object due to their implementation. Most common examples include instant triggers for Slack, Zoom, Intercom and Facebook lead ads apps.","security":[{"token":["hooks:read"]}],"parameters":[{"name":"hookId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the webhook. Use the `GET /hooks` API call to get the ID values of your webhooks.","example":654},{"name":"logId","in":"path","schema":{"type":"string"},"required":true,"description":"The ID of the webhook execution log. Use the `GET /hooks/{hookId}/logs` API call to get the ID values of your webhook execution logs.","example":"95b1c20c790ff5f9d2f1e805943ce95d"},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hookLog":{"type":"object","properties":{"statusId":{"type":"integer"},"parser":{"type":"string"},"replayable":{"type":"boolean"},"data":{"type":"object","properties":{"request":{"type":"object","properties":{"headers":{"type":"object","additionalProperties":{}},"method":{"type":"string"},"query":{"type":"object","additionalProperties":{}},"ip":{"type":"string"},"parsed":{"type":"string"},"body":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":{}}]},"url":{"type":"string"}}},"response":{"type":"object","properties":{"headers":{"type":"array","items":{"type":"string"}},"body":{"type":"string"},"status":{"type":"integer"}}}}},"sizes":{"type":"object","properties":{"before":{"type":"integer"},"after":{"type":"integer"}}},"loggedAt":{"type":"string","format":"date-time"},"udids":{"type":"array","items":{"type":"string"}},"typeId":{"type":"integer"},"id":{"type":"integer"},"appParser":{"type":"string"},"imtId":{"type":"string"}}}}},"example":{"hookLog":{"statusId":1,"parser":"gateway-webhook","replayable":true,"data":{"request":{"headers":{"x-request-sample-header-item":"95b1c20c790ff5f9d2f1e805943ce95d"},"method":"POST","query":{},"ip":"11.111.111.111","parsed":null,"body":{"value":"Test"},"url":"/1oknbf9q7ctpjwrych332ump3ny4d66r"},"response":{"headers":[],"body":"Accepted","status":200}}},"sizes":{"before":127,"after":127},"loggedAt":"2022-09-01T13:36:37.908Z","udids":["1oknbf9q7ctpjwrych332ump3ny4d66r"],"typeId":3,"id":"95b1c20c790ff5f9d2f1e805943ce95e","appParser":null,"imtId":"1662039397908_DlZE-YIBperJkDkklpFj"}}}}}}},"/imt/apps":{"get":{"x-internal":true,"tags":["IMT"],"summary":"List of apps+modules available to the current user for the scenario editor app search.","description":"Returns the apps catalog used by the scenario editor's app search. Two response shapes are\nsupported via the `scoredSearch` query flag:\n\n- **Default (no `scoredSearch`)** — flat list of `SearchAppVersion` entries (one per native/SDK\n  package) plus `AddonApp` entries.\n- **`scoredSearch=true`** — apps are scored against zone-level and team-level usage to rank\n  common picks higher. Each app aggregates its versions and modules under\n  `versions[].modules[]`, and `versions[].groups[]` carries the rendered grouping for the UI.\n\nThe scored response is transformed before being returned:\n\n1. **Group normalization** — `versions[].groups` is normalized so the response always exposes\n   a well-formed grouping. Authored groupings with fewer than 2 groups are discarded and\n   replaced with per-type default groups (`'actions'`, `'triggers'`, …); otherwise authored\n   groups are preserved and orphan modules (those not referenced by any group) are appended\n   to per-type defaults.\n2. **Module reorganization** — modules can be copied or moved across apps according to\n   product-managed rules. A relocated module appears in the target app's `versions[].modules[]`\n   carrying `appName`, `appVersion`, and `theme` fields that point at its **source** package.\n   The frontend must use these fields (when present) to load the correct source manifest and\n   render the module in its original app's branding, because a module's unique identity is\n   `(parentApp.name, module.name)`.\n","security":[{"token":["apps:read"]}],"parameters":[{"name":"organizationId","in":"query","schema":{"type":"integer","minimum":1},"required":true,"description":"Organization context for filtering custom (SDK) apps and resolving feature controls."},{"name":"scoredSearch","in":"query","schema":{"type":"boolean"},"required":false,"description":"If `true`, the response is enriched with scoring (zone + team usage) and modules are\naggregated per version. Requires `teamId`. When omitted, a non-scored shape is returned.\n"},{"name":"teamId","in":"query","schema":{"type":"integer","minimum":1},"required":false,"description":"Team whose usage drives team-level module scoring. **Required when `scoredSearch=true`**;\nignored otherwise.\n"},{"name":"supportsEndpoints","in":"query","schema":{"type":"boolean"},"required":false,"description":"If `true`, only apps exposing at least one usable **endpoint** are returned: an endpoint\ncounts when it is public and non-deprecated, except that an SDK app's own author also\ncounts their own private (non-public) endpoints of that app. Addon apps can never have\nendpoints, so they are always excluded when this is `true`.\n\n\"Usable\" here is narrower than on `GET /imt/endpoints-usable`: this endpoint has no team\ncontext to check against, so it does **not** consider whether a team connection exists for\nan endpoint's required account/scope. An app can therefore appear in this list and still\nresolve to zero endpoints from `GET /imt/endpoints-usable` until the caller creates a\nmatching connection — that's the intended flow for a \"pick an app, then connect it\" UI.\n\nComposes with `scoredSearch`: the same set of apps is returned either way, since the\nendpoint filter is applied before scoring — the scored shape just does not carry the\n`endpoints` field.\n\nRequires the `is_endpoints_execution_enabled` GrowthBook flag (the same flag gating\n`GET /imt/endpoints-usable`). If the flag is disabled, passing `supportsEndpoints=true`\nreturns a `400` (`IM903`) instead of silently ignoring the parameter; `GET /imt/apps`\nwithout it keeps working regardless of the flag.\n"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["apps"],"properties":{"apps":{"type":"array","items":{"oneOf":[{"type":"object","description":"A native or SDK app with version/module aggregation and zone+team scoring applied.\nReturned only when `scoredSearch=true`.\n","required":["name","label","theme","icon","type","score","versions"],"properties":{"name":{"type":"string","description":"App package name."},"label":{"type":"string","description":"App display label."},"description":{"type":"string","nullable":true},"theme":{"type":"string","nullable":true,"description":"Hex color of the app's branding (e.g. `'#18bfff'`)."},"icon":{"type":"string","nullable":true},"comingSoon":{"type":"boolean"},"premiumTier":{"type":"integer","description":"Premium level [0-10]; SDK apps default to 0."},"keywords":{"type":"string","description":"Comma-separated keywords for app search."},"type":{"type":"string","enum":["native","sdk"],"description":"App kind. Addon apps use the `AddonApp` schema."},"score":{"type":"number","description":"Aggregate score combining zone- and team-level usage."},"versions":{"type":"array","items":{"type":"object","required":["version","public","modules"],"properties":{"version":{"type":"string","description":"Full semver version of the package (e.g. `'1.2.0'`)."},"public":{"type":"boolean"},"beta":{"type":"boolean"},"foreign":{"type":"boolean","description":"True when the app is installed from an invite link."},"approved":{"type":"boolean"},"supportsAgent":{"type":"boolean"},"modules":{"type":"array","items":{"type":"object","description":"A module under a scored app version. May be either a native module of the parent app, or\na module **relocated** from a different source app by the product-managed reorganizer.\nWhen relocated, `appName`/`appVersion`/`theme` identify the *source* package — see the\nendpoint description.\n","required":["name","label","type","score"],"properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","description":"Module kind (e.g. `'action'`, `'trigger'`, `'search'`, …)."},"score":{"type":"number"},"listener":{"type":"boolean"},"acid":{"type":"boolean"},"public":{"type":"boolean"},"deprecated":{"type":"boolean"},"approved":{"type":"boolean"},"supportsAgent":{"type":"boolean"},"centicreditsFormula":{"type":"string"},"centicreditsFormulaDescription":{"type":"string"},"centicreditsFormulaDocumentationUrl":{"type":"string"},"centicreditsFormulaMeta":{"type":"object","additionalProperties":true},"appName":{"type":"string","description":"Present only on **relocated** modules. Name of the source app package this module\noriginally belongs to. Frontend MUST use this (when present) as the package identifier\nwhen materializing the module into a scenario blueprint.\n"},"appVersion":{"type":"string","description":"Present only on relocated modules. Full semver version of the source package\n(e.g. `'1.0.0'`). Used together with `appName` to load the source manifest.\n"},"theme":{"type":"string","description":"Present only on relocated modules. Hex color theme of the source package, so the\nfrontend can render the module in its original app's branding.\n"}}}},"groups":{"type":"array","description":"Always present after the group normalization step (see endpoint description).\nEither authored groups (≥ 2 of them) plus any per-type defaults for orphan modules,\nor per-type default groups if the app had no real authored grouping.\n","items":{"type":"object","required":["label","modules"],"properties":{"label":{"type":"string","description":"Authored group label, or a per-type default like `'actions'`, `'triggers'`,\n`'searches'`, `'transformers'`, `'routers'`, etc.\n"},"modules":{"type":"array","items":{"type":"string"},"description":"Module names belonging to this group (references into `modules[]`)."}}}}}}}}},{"type":"object","description":"Addon entries returned alongside native/SDK apps. Shape is preserved from\n`req.app.get('addonApps')` (provided by the `load-addon.apps.js` loader).\n","additionalProperties":true}]},"description":"When `scoredSearch=true`, items are `ScoredSearchApp` (native/SDK) or\n`AddonApp`. When `scoredSearch` is omitted/false, items are the non-scored\nmanifest shapes (not documented here).\n"}}}}}},"400":{"description":"Invalid query parameters, or `supportsEndpoints=true` while the\n`is_endpoints_execution_enabled` GrowthBook flag is disabled (`IM903`).\n"}}},"components":{"schemas":{"ScoredSearchApp":{"type":"object","description":"A native or SDK app with version/module aggregation and zone+team scoring applied.\nReturned only when `scoredSearch=true`.\n","required":["name","label","theme","icon","type","score","versions"],"properties":{"name":{"type":"string","description":"App package name."},"label":{"type":"string","description":"App display label."},"description":{"type":"string","nullable":true},"theme":{"type":"string","nullable":true,"description":"Hex color of the app's branding (e.g. `'#18bfff'`)."},"icon":{"type":"string","nullable":true},"comingSoon":{"type":"boolean"},"premiumTier":{"type":"integer","description":"Premium level [0-10]; SDK apps default to 0."},"keywords":{"type":"string","description":"Comma-separated keywords for app search."},"type":{"type":"string","enum":["native","sdk"],"description":"App kind. Addon apps use the `AddonApp` schema."},"score":{"type":"number","description":"Aggregate score combining zone- and team-level usage."},"versions":{"type":"array","items":{"type":"object","required":["version","public","modules"],"properties":{"version":{"type":"string","description":"Full semver version of the package (e.g. `'1.2.0'`)."},"public":{"type":"boolean"},"beta":{"type":"boolean"},"foreign":{"type":"boolean","description":"True when the app is installed from an invite link."},"approved":{"type":"boolean"},"supportsAgent":{"type":"boolean"},"modules":{"type":"array","items":{"type":"object","description":"A module under a scored app version. May be either a native module of the parent app, or\na module **relocated** from a different source app by the product-managed reorganizer.\nWhen relocated, `appName`/`appVersion`/`theme` identify the *source* package — see the\nendpoint description.\n","required":["name","label","type","score"],"properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","description":"Module kind (e.g. `'action'`, `'trigger'`, `'search'`, …)."},"score":{"type":"number"},"listener":{"type":"boolean"},"acid":{"type":"boolean"},"public":{"type":"boolean"},"deprecated":{"type":"boolean"},"approved":{"type":"boolean"},"supportsAgent":{"type":"boolean"},"centicreditsFormula":{"type":"string"},"centicreditsFormulaDescription":{"type":"string"},"centicreditsFormulaDocumentationUrl":{"type":"string"},"centicreditsFormulaMeta":{"type":"object","additionalProperties":true},"appName":{"type":"string","description":"Present only on **relocated** modules. Name of the source app package this module\noriginally belongs to. Frontend MUST use this (when present) as the package identifier\nwhen materializing the module into a scenario blueprint.\n"},"appVersion":{"type":"string","description":"Present only on relocated modules. Full semver version of the source package\n(e.g. `'1.0.0'`). Used together with `appName` to load the source manifest.\n"},"theme":{"type":"string","description":"Present only on relocated modules. Hex color theme of the source package, so the\nfrontend can render the module in its original app's branding.\n"}}}},"groups":{"type":"array","description":"Always present after the group normalization step (see endpoint description).\nEither authored groups (≥ 2 of them) plus any per-type defaults for orphan modules,\nor per-type default groups if the app had no real authored grouping.\n","items":{"type":"object","required":["label","modules"],"properties":{"label":{"type":"string","description":"Authored group label, or a per-type default like `'actions'`, `'triggers'`,\n`'searches'`, `'transformers'`, `'routers'`, etc.\n"},"modules":{"type":"array","items":{"type":"string"},"description":"Module names belonging to this group (references into `modules[]`)."}}}}}}}}},"ScoredAppVersion":{"type":"object","required":["version","public","modules"],"properties":{"version":{"type":"string","description":"Full semver version of the package (e.g. `'1.2.0'`)."},"public":{"type":"boolean"},"beta":{"type":"boolean"},"foreign":{"type":"boolean","description":"True when the app is installed from an invite link."},"approved":{"type":"boolean"},"supportsAgent":{"type":"boolean"},"modules":{"type":"array","items":{"type":"object","description":"A module under a scored app version. May be either a native module of the parent app, or\na module **relocated** from a different source app by the product-managed reorganizer.\nWhen relocated, `appName`/`appVersion`/`theme` identify the *source* package — see the\nendpoint description.\n","required":["name","label","type","score"],"properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","description":"Module kind (e.g. `'action'`, `'trigger'`, `'search'`, …)."},"score":{"type":"number"},"listener":{"type":"boolean"},"acid":{"type":"boolean"},"public":{"type":"boolean"},"deprecated":{"type":"boolean"},"approved":{"type":"boolean"},"supportsAgent":{"type":"boolean"},"centicreditsFormula":{"type":"string"},"centicreditsFormulaDescription":{"type":"string"},"centicreditsFormulaDocumentationUrl":{"type":"string"},"centicreditsFormulaMeta":{"type":"object","additionalProperties":true},"appName":{"type":"string","description":"Present only on **relocated** modules. Name of the source app package this module\noriginally belongs to. Frontend MUST use this (when present) as the package identifier\nwhen materializing the module into a scenario blueprint.\n"},"appVersion":{"type":"string","description":"Present only on relocated modules. Full semver version of the source package\n(e.g. `'1.0.0'`). Used together with `appName` to load the source manifest.\n"},"theme":{"type":"string","description":"Present only on relocated modules. Hex color theme of the source package, so the\nfrontend can render the module in its original app's branding.\n"}}}},"groups":{"type":"array","description":"Always present after the group normalization step (see endpoint description).\nEither authored groups (≥ 2 of them) plus any per-type defaults for orphan modules,\nor per-type default groups if the app had no real authored grouping.\n","items":{"type":"object","required":["label","modules"],"properties":{"label":{"type":"string","description":"Authored group label, or a per-type default like `'actions'`, `'triggers'`,\n`'searches'`, `'transformers'`, `'routers'`, etc.\n"},"modules":{"type":"array","items":{"type":"string"},"description":"Module names belonging to this group (references into `modules[]`)."}}}}}},"ScoredAppModule":{"type":"object","description":"A module under a scored app version. May be either a native module of the parent app, or\na module **relocated** from a different source app by the product-managed reorganizer.\nWhen relocated, `appName`/`appVersion`/`theme` identify the *source* package — see the\nendpoint description.\n","required":["name","label","type","score"],"properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","description":"Module kind (e.g. `'action'`, `'trigger'`, `'search'`, …)."},"score":{"type":"number"},"listener":{"type":"boolean"},"acid":{"type":"boolean"},"public":{"type":"boolean"},"deprecated":{"type":"boolean"},"approved":{"type":"boolean"},"supportsAgent":{"type":"boolean"},"centicreditsFormula":{"type":"string"},"centicreditsFormulaDescription":{"type":"string"},"centicreditsFormulaDocumentationUrl":{"type":"string"},"centicreditsFormulaMeta":{"type":"object","additionalProperties":true},"appName":{"type":"string","description":"Present only on **relocated** modules. Name of the source app package this module\noriginally belongs to. Frontend MUST use this (when present) as the package identifier\nwhen materializing the module into a scenario blueprint.\n"},"appVersion":{"type":"string","description":"Present only on relocated modules. Full semver version of the source package\n(e.g. `'1.0.0'`). Used together with `appName` to load the source manifest.\n"},"theme":{"type":"string","description":"Present only on relocated modules. Hex color theme of the source package, so the\nfrontend can render the module in its original app's branding.\n"}}},"AddonApp":{"type":"object","description":"Addon entries returned alongside native/SDK apps. Shape is preserved from\n`req.app.get('addonApps')` (provided by the `load-addon.apps.js` loader).\n","additionalProperties":true}}}},"/imt/apps-meta":{"get":{"x-internal":true,"tags":["IMT"],"summary":"All verified and custom apps, that are available to current user or selected organisation.","security":[{"token":["apps:read"]}],"parameters":[{"name":"skipSdkApps","in":"query","schema":{"type":"boolean"},"required":false,"description":"If set to true, custom apps will be excluded from response. These are either apps developed by the requesters organisation\nor installed from a shared link\n"},{"name":"organizationId","in":"query","schema":{"type":"integer"},"required":false,"description":"If set, return custom apps only from given organizationid, still returning all verified apps\nHas no effect if skipSdkApps is set to true\n"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"apps":{"type":"array","items":{"type":"object","properties":{"name":{"description":"app name","type":"string"},"label":{"description":"app label (title)","type":"string"},"foreign":{"description":"true if the app is installed from an invite link","type":"boolean"},"theme":{"description":"hex code of color theme for app","type":"string"},"version":{"description":"app major version [number]","type":"integer"},"isPrivate":{"description":"true when a (verified) app has been set to \"hidden\" in the zone (cannot be found in app search) OR when the app is a custom app developed by the requesters organisation and has not been shared with an invite link yet.","type":"boolean"},"app":{"description":"true for custom apps - either private or installed from an invite link, false for verified apps","type":"boolean"},"categories":{"description":"array of strings ['category1', 'category2'], NOT YET IMPLEMENTED","type":"array","items":{"type":"string"}},"keywords":{"description":"string of keywords for the app, separated by \", \"","type":"string"},"premiumTier":{"description":"level of premium [0-10], custom apps level defaults to 0","type":"integer"},"brand":{"deprecated":true},"coming_soon":{"deprecated":true}}}}}},"examples":{"meta":{"value":{"apps":[{"name":"my-custom-app-mn8qq6","label":"My Custom App","foreign":false,"theme":"#cccccc","version":1,"isPrivate":true,"app":true,"categories":[],"keywords":"","premiumTier":0,"brand":{},"coming_soon":false},{"name":"airtable","label":"Airtable","foreign":false,"theme":"#18bfff","version":3,"isPrivate":false,"app":false,"categories":[],"keywords":"","premiumTier":0,"brand":{},"coming_soon":false},{"name":"datastore","label":"Data store","foreign":false,"theme":"#2f8cbb","version":2,"isPrivate":false,"app":false,"categories":[],"keywords":"database, datastore, Make, data, store, storage ","premiumTier":0,"brand":{},"coming_soon":false}]}}}}}}}}},"/imt/endpoints-usable":{"get":{"x-internal":true,"tags":["IMT"],"summary":"List the endpoints usable in a team given its available apps and connections.","description":"Returns the catalog of app **endpoints** a team can actually call right now, considering both the\napps available to the team's organization and the connections (accounts) that exist in the team.\nCovers both native (compiled) packages and SDK apps; results are grouped by package and version.\n\nAn endpoint is included when:\n\n- its app is available to the team's organization (installed / public), **and**\n- either it requires no connection at all (no attached account — usable without authentication), or\n  the team has at least one connection of a matching account type whose granted OAuth scopes cover\n  the scopes the endpoint requires.\n\nFor each returned endpoint, `credentialsRequired` indicates whether the endpoint needs a connection at\nall, and `credentialsAvailable` lists the concrete connections in the team that satisfy it (empty for\nendpoints that need no connection). Private and deprecated endpoints are excluded, except that the\napp's author always sees their own (non-public and deprecated) endpoints. By default the caller's\npending annotation changes are reflected for endpoints of apps they author.\n","security":[{"token":["apps:read"]}],"parameters":[{"name":"teamId","in":"query","schema":{"type":"integer","minimum":1},"required":true,"description":"The team to list usable endpoints for. The caller needs the `accounts:read` team permission.","examples":{"gmail-team":{"value":4711}}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"type":"object","required":["packages"],"properties":{"packages":{"type":"array","description":"Native packages and SDK apps, each with its usable endpoints grouped by version.","items":{"type":"object","required":["name","label","versions"],"properties":{"name":{"type":"string","description":"Package name. SDK apps are prefixed with `app#` (e.g. `app#my-crm`)."},"label":{"type":"string","description":"Package display label."},"description":{"type":"string","nullable":true,"description":"Package description, when set."},"versions":{"type":"array","items":{"type":"object","required":["version","endpoints"],"properties":{"version":{"type":"integer","description":"Major version of the package."},"endpoints":{"type":"array","items":{"type":"object","required":["name","label","annotations","deprecated","private","credentialsRequired","credentialsAvailable"],"properties":{"name":{"type":"string","description":"Endpoint name, unique within the package version."},"label":{"type":"string","description":"Endpoint display label."},"description":{"type":"string","nullable":true,"description":"Human-friendly description of the endpoint, when set."},"annotations":{"type":"object","additionalProperties":true,"description":"MCP-style behavior hints (e.g. `readOnlyHint`, `destructiveHint`). For\nendpoints of an app the caller authors, this reflects the caller's pending\nannotation changes.\n"},"deprecated":{"type":"boolean","description":"Whether the endpoint is deprecated. Deprecated endpoints are normally omitted."},"private":{"type":"boolean","description":"Whether the endpoint is non-public. Non-public endpoints are visible only to\nthe app author.\n"},"credentialsRequired":{"type":"boolean","description":"Whether the endpoint requires a connection (account) to be called. `false` for\nendpoints usable without authentication.\n"},"credentialsAvailable":{"type":"array","description":"The connections in the team that can drive this endpoint. Empty for endpoints\nthat need no connection (usable without authentication).\n","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"integer","description":"Connection (account) id."},"name":{"type":"string","description":"Connection display name."}}}}}}}}}}}}}}},"examples":{"gmail-team":{"summary":"One SDK app with a connection-gated endpoint and a no-auth endpoint.","value":{"packages":[{"name":"app#my-crm","label":"My CRM","description":"Custom CRM integration.","versions":[{"version":1,"endpoints":[{"name":"listContacts","label":"List contacts","description":"Returns the contacts visible to the connection.","annotations":{"readOnlyHint":true},"deprecated":false,"private":false,"credentialsRequired":true,"credentialsAvailable":[{"id":9001,"name":"My CRM connection"}]},{"name":"ping","label":"Health check","description":null,"annotations":{},"deprecated":false,"private":false,"credentialsRequired":false,"credentialsAvailable":[]}]}]}]}}}}}},"400":{"description":"Invalid query parameters (e.g. missing or non-positive `teamId`)."},"403":{"description":"The caller lacks the `accounts:read` permission on the team."}}}},"/imt/apps/{name}/{version}/modules-with-credentials":{"get":{"tags":["IMT"],"summary":"List App Modules with Credentials","deprecated":true,"description":"**Deprecated.** Use `GET /credential-requests/apps/{name}/{version}/modules-with-credentials` instead.\nThis endpoint continues to work but will be removed in a future release.\n\nRetrieves all modules with credential requirements for a specific app and version.\n\nFor each module, this endpoint returns:\n- Module identification (`id`, `name`, `label`)\n- Required credential type (e.g., `account:slack2`)\n- OAuth scopes required by the module\n- Whether the module is a hook-based trigger\n\n**Custom/SDK Apps**: To query custom (SDK) apps, prefix the app name with `app#` (URL-encoded as `app%23`).\nFor example: `/imt/apps/app%23my-custom-app/1/modules-with-credentials`\n","security":[{"token":["apps:read"]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","pattern":"^(app#)?[a-z][0-9a-z-]+[0-9a-z]$","minLength":3,"maxLength":135},"description":"The name of the app. Must start with a lowercase letter, contain only lowercase letters, numbers, and hyphens, and end with a letter or number. Minimum 3 characters (e.g., `a-b`, `abc`).\n\nFor SDK/custom apps, use the `app#` prefix (URL-encoded as `app%23`).\n","example":"slack"},{"name":"version","in":"path","required":true,"schema":{"oneOf":[{"type":"integer","minimum":1},{"type":"string","enum":["latest"]}]},"description":"The major version of the app. Use a specific version number (e.g., `1`, `2`, `4`) or `latest` to get the most recent version.\n","example":4}],"responses":{"200":{"description":"Successful response with list of app modules and their credential requirements.","headers":{"x-imt-package-name":{"schema":{"type":"string"},"description":"The name of the app package.","example":"slack"},"x-imt-package-version":{"schema":{"type":"string"},"description":"The full version string of the app package.","example":"4.0.0"}},"content":{"application/json":{"schema":{"type":"object","properties":{"appModules":{"type":"array","description":"List of modules with their credential requirements.","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the module credential configuration.\nFor modules with a single credential, this matches the module name.\nFor modules with multiple credentials, includes additional context (e.g., `moduleName:paramName`).\n"},"name":{"type":"string","description":"The technical name of the module."},"label":{"type":"string","description":"Human-readable display name of the module."},"type":{"type":"string","description":"The credential type required by the module.\nFormat is typically `account:<app-name>` or `keychain:<app-name>`.\nMultiple types may be comma-separated (e.g., `account:slack2,slack3`).\n"},"scope":{"type":"array","description":"List of OAuth scopes required by this module.","items":{"type":"string"}},"hook":{"type":"boolean","description":"Indicates whether this module is a hook-based trigger."}}}}}},"examples":{"slack-modules":{"summary":"Slack app modules","description":"Example response for Slack app version 4","value":{"appModules":[{"id":"CreateMessage","name":"CreateMessage","label":"Send a Message","type":"account:slack2,slack3","scope":["chat:write","chat:write.public","chat:write.customize","channels:read","groups:read","im:read","mpim:read","users:read"],"hook":false},{"id":"WatchMessages","name":"WatchMessages","label":"Watch Public Channel Messages","type":"account:slack2","scope":["channels:history","channels:read"],"hook":false},{"id":"watchInteractivityEvents","name":"watchInteractivityEvents","label":"Watch Interactive Events","type":"account:slack2,slack3","scope":[],"hook":true}]}}}}}},"404":{"description":"App or package not found.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code."},"message":{"type":"string","description":"Error message."}}},"example":{"code":"SC404","message":"Package not found."}}}}}}},"/internal/organizations":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Internal - Get organization details by IDs","description":"Retrieves details for specified organizations by their IDs. You can specify which columns to return using the `cols[]` query parameter. If `cols[]` is not provided, all available details for the organizations are returned.","parameters":[{"name":"ids","in":"query","description":"An array of organization IDs to retrieve details for.","required":true,"schema":{"type":"array","items":{"type":"integer","minimum":1}}},{"name":"cols","in":"query","description":"An array of column names to include in the response for each organization. `id` is always included. Besides the organization's own columns, `timezoneName`, `countryCode`, `languageCode` and `localeCode` are resolved from the referenced timezone and country records. If omitted, all of the organization's own columns are returned together with all four resolved values.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["id","name","created","timezoneName","countryCode"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organizations":{"type":"array","items":{"type":"object","description":"Represents an organization's details. The actual fields returned depend on the 'cols' parameter or all fields if 'cols' is omitted.","properties":{"id":{"type":"integer","format":"int64","description":"The organization's unique identifier."},"name":{"type":"string","description":"The name of the organization."},"created":{"type":"string","format":"date-time","description":"The creation timestamp of the organization."},"updated":{"type":"string","format":"date-time","description":"The last update timestamp of the organization."},"deleted":{"type":"boolean","description":"Flag indicating if the organization is deleted."},"deletedAt":{"type":"string","format":"date-time","nullable":true,"description":"The timestamp when the organization was deleted."},"countryId":{"type":"integer","description":"The country ID for the organization."},"externalId":{"type":"string","nullable":true,"description":"External identifier for the organization."},"features":{"type":"object","nullable":true,"description":"JSON object describing features.","additionalProperties":true},"initialTeamId":{"type":"integer","nullable":true,"description":"This is the ID of the first team that is created in the organization. There is no foreign key on purpose, since the reference can become invalid when the initial team is deleted. On the other hand, since process of creating a new organization and a new, first team in the organization, can be a bit decoupled, we need to set the value only when we really know that no team has been created so far. That is why we keep the dangling reference, because when the field is not null, but contains any number, we know that at least one team has been already created."},"license":{"type":"object","nullable":true,"description":"JSON object describing the license.","additionalProperties":true},"productFlags":{"type":"object","nullable":true,"description":"JSON object for product flags.","additionalProperties":true},"productName":{"type":"object","nullable":true,"description":"Product name details, typically a JSON object or string.","additionalProperties":true},"rev":{"type":"integer","description":"Revision number of the organization record."},"slug":{"type":"string","nullable":true,"description":"URL-friendly slug for the organization."},"ssoType":{"type":"string","nullable":true,"description":"Single Sign-On type configured for the organization."},"timezoneId":{"type":"integer","description":"The timezone ID for the organization."},"userSessionTimeout":{"type":"integer","description":"User session timeout in seconds for the organization."},"timezoneName":{"type":"string","description":"IANA name of the organization's timezone (e.g. `Europe/Prague`), resolved from `timezoneId`. Returned when requested via `cols`, or when `cols` is omitted."},"countryCode":{"type":"string","nullable":true,"description":"ISO 3166-1 alpha-2 code of the organization's country, lowercase as stored (e.g. `us`), resolved from `countryId`. Returned when requested via `cols`, or when `cols` is omitted."},"languageCode":{"type":"string","description":"Default language of the organization's country, resolved from `countryId`. Returned when requested via `cols`, or when `cols` is omitted."},"localeCode":{"type":"string","description":"Default locale of the organization's country, lowercase as stored (e.g. `en-us`), resolved from `countryId`. Returned when requested via `cols`, or when `cols` is omitted."}},"example":{"id":123,"name":"Example Corp","created":"2024-01-15T10:00:00Z","updated":"2024-06-01T14:30:00Z","deleted":false,"deletedAt":null,"countryId":840,"externalId":"ext-org-789","features":{"featureA":true,"featureB":"enabled"},"initialTeamId":456,"license":{"type":"premium","seats":100},"productFlags":{"betaAccess":false},"productName":{"displayName":"Make Enterprise Suite"},"rev":5,"slug":"example-corp","ssoType":"saml","timezoneId":100,"userSessionTimeout":3600,"timezoneName":"Europe/Prague","countryCode":"us","languageCode":"en","localeCode":"en-us"}}}}}}}}}}},"/internal/organizations/{organizationId}/paused":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Get organization pause status","description":"Retrieves the pause status of the organization with the specified `organizationId`.","parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"isPaused":{"type":"boolean","description":"Whether the organization is currently paused=true or not=false."}}}}}}}}},"/internal/organizations/{organizationId}/internal-organization":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Get canonical internal organization billing data","description":"Returns the canonical execution-time organization projection used by scenario blueprint finalization and RPC workers. Values are derived from `users.organization.license` and `users.organization.product_flags` via `scenarios.blueprint_finalize_internal_organization`.\n","parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":631}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["organization"],"properties":{"organization":{"type":"object","required":["id","license","customApps","productFlags"],"properties":{"id":{"type":"integer","example":631},"license":{"type":"object","required":["premiumApps"],"properties":{"premiumApps":{"type":"integer","minimum":0,"example":5}}},"customApps":{"type":"object","required":["enableExpensiveModels"],"properties":{"enableExpensiveModels":{"type":"boolean","example":true}}},"productFlags":{"type":"object","required":["isTrial","isPromo","isFreePlan","isEnterprise"],"properties":{"isTrial":{"type":"boolean"},"isPromo":{"type":"boolean"},"isFreePlan":{"type":"boolean"},"isEnterprise":{"type":"boolean"}}}}}}}}}},"404":{"description":"Organization not found"}}}},"/internal/scenarios/{scenarioId}/credentials":{"get":{"x-internal":true,"tags":["Scenarios"],"summary":"Get scenario credentials","description":"Retrieves all credentials (connections and keys) used in a scenario with a given ID. Returns the list of accounts and keys along with their author information.","parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioAccounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"authorId":{"type":"integer"},"email":{"type":"string","format":"email"},"userName":{"type":"string"}}}},"scenarioKeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"authorId":{"type":"integer"},"email":{"type":"string","format":"email"},"userName":{"type":"string"}}}}}},"example":{"scenarioAccounts":[{"id":1234,"name":"My Google Connection","authorId":42,"email":"user@example.com","userName":"John Doe"}],"scenarioKeys":[{"id":5678,"name":"My API Key","authorId":42,"email":"user@example.com","userName":"John Doe"}]}}}}}}},"/internal/devices/enrichments":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Get device enrichments","description":"Retrieves basic enrichment data for a list of device IDs. This endpoint is designed for internal services\nthat need to enrich their data with device information including device ID, UDID, and associated team ID.\n","parameters":[{"name":"ids","in":"query","required":true,"description":"Array of device IDs to retrieve enrichment data for. Each ID must be a positive integer.","style":"form","explode":true,"schema":{"type":"array","items":{"type":"integer","minimum":1,"example":123},"minItems":1,"maxItems":1000},"example":[123,456,789]}],"responses":{"200":{"description":"Successfully retrieved device enrichments","content":{"application/json":{"schema":{"type":"object","properties":{"devices":{"type":"array","description":"Array of device enrichment objects","items":{"type":"object","description":"Simplified device information for enrichment purposes","properties":{"id":{"type":"integer","description":"Unique device identifier","example":123,"minimum":1},"udid":{"type":"string","description":"Universal Device Identifier (32-character hexadecimal string)","example":"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6","pattern":"^[a-f0-9]{32}$","minLength":32,"maxLength":32},"teamId":{"type":"integer","description":"ID of the team/organization that owns this device","example":789,"minimum":1}},"required":["id","udid","teamId"],"additionalProperties":false}}},"required":["devices"]},"examples":{"single_device":{"summary":"Single device enrichment","description":"Response when requesting enrichment for one device","value":{"devices":[{"id":123,"udid":"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6","teamId":789}]}},"multiple_devices":{"summary":"Multiple device enrichments","description":"Response when requesting enrichments for multiple devices","value":{"devices":[{"id":123,"udid":"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6","teamId":789},{"id":456,"udid":"b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7","teamId":789},{"id":999,"udid":"z9y8x7w6v5u4t3s2r1q0p9o8n7m6l5k4","teamId":101}]}},"empty_result":{"summary":"No devices found","description":"Response when no devices match the provided IDs","value":{"devices":[]}}}}}}}}},"/internal/scenarios/executions":{"get":{"x-internal":true,"tags":["Scenarios"],"summary":"Get scenario executions list","security":[{"token":["scenarios:read"]}],"parameters":[{"in":"query","description":"Execution IDs which will be listed (limited to 1000)","name":"executionIds","required":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"executions":{"type":"array","description":"List of scenario executions","items":{"type":"object","properties":{"executionId":{"type":"string"},"scenarioId":{"type":"integer"},"teamId":{"type":"integer"}}}}}},"example":{"executions":[{"executionId":"b9bbe818dd6c4d19947aa0d1ca24fe5c","scenarioId":123},{"executionId":"b9bbe818dd6c4d19947aa0d1ca24gh6a","scenarioId":456}]}}}}}}},"/internal/scenarios/list-for-team":{"get":{"x-internal":true,"tags":["Scenarios"],"summary":"List scenarios for a team","description":"Returns a list of scenarios belonging to a team for ISC consumers (e.g. make-adapter). Requires a valid ISC JWT signed by the caller's shared secret.\n\n**Full mode** (no `updatedSince`): returns all non-deleted, non-tool scenarios.\n\n**Delta mode** (`updatedSince` provided as epoch-ms): returns every scenario whose `lastEdit` is >= that timestamp, including soft-deleted ones (`isDeleted: true`). Soft-deletes bump `lastEdit`, so deletions ride the same delta response without a separate reconcile pass.\n","parameters":[{"in":"query","name":"teamId","required":true,"description":"Numeric ID of the team whose scenarios to list.","schema":{"type":"integer"}},{"in":"query","name":"updatedSince","required":false,"description":"Optional epoch-ms timestamp. When provided, switches to delta mode: returns all scenarios (including soft-deleted) whose lastEdit >= this value.\n","schema":{"type":"integer","format":"int64","minimum":0}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["scenarios"],"properties":{"scenarios":{"type":"array","description":"Scenarios for the team. In full mode, only non-deleted scenarios are included. In delta mode, soft-deleted scenarios are also returned with isDeleted: true.\n","items":{"type":"object","required":["id","name","isActive","updatedAt","isDeleted"],"properties":{"id":{"type":"integer","description":"Scenario ID."},"name":{"type":"string","description":"Scenario display name."},"isActive":{"type":"boolean","description":"Whether the scenario is linked/active."},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of the last edit."},"isDeleted":{"type":"boolean","description":"Whether the scenario has been soft-deleted. Always false in full mode. In delta mode, true means the scenario was deleted since the last sync.\n"}}}}}},"example":{"scenarios":[{"id":1,"name":"My Scenario","isActive":true,"updatedAt":"2024-01-15T10:30:00.000Z","isDeleted":false}]}}}},"400":{"description":"Missing or invalid teamId or updatedSince query parameter."},"401":{"description":"Missing or invalid ISC authentication."}}}},"/internal/users/{userId}/features":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Get user features","description":"Retrieves the features enabled for a specific user by their `userId`. This endpoint is for internal service-to-service communication using ISC authorization.","parameters":[{"name":"userId","in":"path","schema":{"type":"integer","minimum":1},"required":true,"description":"The ID of the user.","example":123}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"features":{"type":"object","additionalProperties":{"type":"boolean"},"description":"A map of feature names to their enabled status (true/false).","example":{"local_access":true,"allow_apps":true}}}}}}},"401":{"description":"Unauthorized - Missing or invalid ISC authorization","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM001"},"message":{"type":"string","example":"Access denied."}}}}}},"404":{"description":"User not found","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM101"},"message":{"type":"string","example":"User doesn't exist"}}}}}}}}},"/internal/users/lookup-by-email":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Resolve a user id by email","description":"Resolves an email to a Make user id for internal service-to-service communication using ISC authorization. Soft-deleted and suspended users are treated as non-existent. Responds with `userId: null` (not 404) when no active user matches — an unmatched email is an expected outcome, not an error.","parameters":[{"name":"email","in":"query","required":true,"description":"The email address to resolve. Matched case-insensitively.","schema":{"type":"string","minLength":1,"maxLength":254,"format":"email"},"example":"responder@example.com"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"integer","nullable":true,"description":"The resolved Make user id, or `null` when the email is not a known active Make user.","example":123}},"required":["userId"]}}}},"400":{"description":"Invalid email format","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM003"},"message":{"type":"string","example":"Validation failed."}}}}}},"401":{"description":"Unauthorized - Missing or invalid ISC authorization","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM001"},"message":{"type":"string","example":"Access denied."}}}}}}}}},"/internal/v2/auth/browser-session":{"get":{"operationId":"getInternalV2AuthBrowserSession","tags":["Internal"],"x-internal":true,"summary":"Resolve the user behind a browser session","description":"Validates a forwarded Make browser session and returns its authenticated user ID. This endpoint is available only to ISC-authorized internal services.","parameters":[{"name":"sid","in":"cookie","required":true,"description":"Make browser session cookie forwarded by the internal caller.","schema":{"type":"string"}}],"responses":{"200":{"description":"The browser session is valid.","content":{"application/json":{"schema":{"type":"object","required":["userId"],"properties":{"userId":{"type":"integer","description":"Authenticated Make user ID.","example":123}}}}}},"401":{"description":"ISC authorization or the forwarded browser session is missing or invalid.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Make API error code.","example":"IM015"},"message":{"type":"string","example":"Invalid session."}}}}}}}}},"/internal/settings":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Internal - Get platform settings","description":"Retrieves details for specified organizations by their IDs. You can specify which columns to return using the `cols[]` query parameter. If `cols[]` is not provided, all available details for the organizations are returned.","parameters":[{"name":"settings","in":"query","description":"An array of settings IDs to include in the response. If omitted, all available settings are returned.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"includeNulls","in":"query","description":"Should the response include null values for settings that are not set for the specified?","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","description":"Key value pairs of system settings.","additionalProperties":true,"example":{"brand_title":"Make","brand_color":"violet"}}}}}}}},"/internal/config/runtime":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Internal - Get runtime configuration","description":"Returns the runtime configuration derived from the current zone and API configuration: the host to use, the OAuth redirect base, redirect/static domains, default locale, support contact, and brand.","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"config":{"type":"object","properties":{"host":{"type":"string","description":"The host to use for links (HQ domain in slave mode, redirector or web domain otherwise)."},"oauthRedirectBase":{"type":"string","description":"Base URL OAuth providers should redirect back to."},"redirects":{"type":"object","properties":{"integromat":{"type":"string"},"make":{"type":"string"}}},"static":{"type":"string","description":"Static assets domain."},"locale":{"type":"string","description":"Default language configured for the zone."},"support":{"type":"string","description":"Support contact email."},"brand":{"type":"object","properties":{"title":{"type":"string"}}}}}},"example":{"config":{"host":"eu1.make.com","oauthRedirectBase":"https://eu1.make.com","redirects":{"integromat":"https://www.integromat.com","make":"https://www.make.com"},"static":"https://static.make.com","locale":"en","support":"support@make.com","brand":{"title":"Make"}}}}}}}}}},"/internal/private-spaces/lookup":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Look up a user's private space","description":"Finds the private space (single-user team) a user owns within an organization. When `accountName` is given, `hasAccount` in the response reports whether the space already has a `users.companyAccount` row with that `account_name` — this lets a caller avoid re-creating a connection that already exists. When `accountName` is omitted, `hasAccount` is `null` (\"not evaluated\"), not `false` — a caller that doesn't ask for the check should not read `false` as \"checked and absent\".\n","parameters":[{"name":"ownerUserId","in":"query","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the user who owns the private space.","example":42},{"name":"organizationId","in":"query","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the organization the private space belongs to.","example":7},{"name":"accountName","in":"query","required":false,"schema":{"type":"string"},"description":"Optional account_name to check for existence on the space (e.g. 'ai-provider'). When omitted, `hasAccount` in the response is `null`.\n","example":"ai-provider"}],"responses":{"200":{"description":"Lookup completed (the user may or may not have a private space in this organization).","content":{"application/json":{"schema":{"type":"object","properties":{"privateSpace":{"type":"object","nullable":true,"description":"`null` when the user has no private space in this organization.","properties":{"teamId":{"type":"integer","description":"The private space's team ID."},"hasAccount":{"type":"boolean","nullable":true,"description":"true/false when `accountName` was given; null when it was omitted."}}}}},"examples":{"found-with-account":{"summary":"Space found, has the requested account","value":{"privateSpace":{"teamId":1234,"hasAccount":true}}},"found-without-account":{"summary":"Space found, does not have the requested account yet","value":{"privateSpace":{"teamId":1234,"hasAccount":false}}},"not-requested":{"summary":"Space found, accountName was omitted","value":{"privateSpace":{"teamId":1234,"hasAccount":null}}},"not-found":{"summary":"User has no private space in this organization","value":{"privateSpace":null}}}}}},"400":{"description":"Invalid or missing ownerUserId/organizationId."},"401":{"description":"Missing or invalid ISC authorization."}}}},"/internal/teams/{teamId}/connections":{"post":{"tags":["Internal"],"x-internal":true,"summary":"Internal - Create a team connection","description":"Creates a new team connection (TAC) for the specified team. Non-OAuth connections are automatically tested after creation via the ConnectionWorker validate/test lifecycle — on success the connection is marked as valid and credentials are persisted. If the test fails, the connection is deleted and a 422 is returned. OAuth connections are created but left unauthorized — the caller must complete the OAuth flow separately.\n","parameters":[{"name":"teamId","in":"path","description":"The ID of the team to create the connection for.","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["accountName","accountType","userId"],"properties":{"accountName":{"type":"string","description":"The connection type identifier (e.g. 'ai-provider')."},"accountType":{"type":"string","description":"The account type identifier, usually same as accountName."},"userId":{"type":"integer","description":"The ID of the user creating the connection. Must exist and have 'account add' permission on the team."},"language":{"type":"string","description":"Language code for localized labels (e.g. 'en', 'cs'). Defaults to 'en'."},"data":{"type":"object","description":"Optional connection data/credentials.","additionalProperties":true}}}}}},"responses":{"200":{"description":"Connection created (and tested for non-OAuth types) successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"accountName":{"type":"string"},"accountType":{"type":"string"},"oauth":{"type":"boolean"},"teamId":{"type":"integer"}}}}}}}},"400":{"description":"Invalid request — missing required fields or invalid account type."},"401":{"description":"Missing or invalid ISC authorization."},"403":{"description":"User does not have permission to create connections on this team, or team does not exist."},"404":{"description":"User not found."},"422":{"description":"Connection was created but failed verification — the connection has been deleted."}}}},"/internal/teams/{teamId}/connections/exists":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Check whether a team already has a connection of a given type","description":"Reports whether the team already has a `users.companyAccount` row with the given `accountType` (the `account_name` column). Lets a caller check before calling `POST /internal/teams/{teamId}/connections`, reducing (not eliminating) the chance of a duplicate — this check and a later create are not atomic, and `users.companyAccount` has no unique constraint on `(company_id, account_name)`. Best-effort, not a guarantee: a caller that must guarantee at most one connection needs its own coordination on top of this.\n","parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":2147483647},"description":"The team ID to check. Matches the PostgreSQL `integer` range used by `users.company.id`.","examples":{"already-has-connection":{"summary":"Team that already has a connection of this type","value":1234},"no-connection-yet":{"summary":"Team that does not have a connection of this type yet","value":5678}}},{"name":"accountType","in":"query","required":true,"schema":{"type":"string","minLength":1},"description":"The account_name value to check for (e.g. 'ai-provider'). Must not be empty.","examples":{"already-has-connection":{"summary":"Account type the team already has a connection for","value":"ai-provider"},"no-connection-yet":{"summary":"Account type the team does not have a connection for yet","value":"ai-provider"}}}],"responses":{"200":{"description":"Check completed.","content":{"application/json":{"schema":{"type":"object","properties":{"hasConnection":{"type":"boolean"}}},"examples":{"already-has-connection":{"summary":"Team already has a connection of this type","value":{"hasConnection":true}},"no-connection-yet":{"summary":"Team does not have a connection of this type yet","value":{"hasConnection":false}}}}}},"400":{"description":"Invalid teamId (missing, non-integer, or outside the 1 to 2147483647 range) or accountType (missing or empty).\n"},"401":{"description":"Missing or invalid ISC authorization."}}}},"/internal/teams/{teamId}/paused":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Get team pause status","description":"Retrieves the pause status of the team with the specified `teamId`.","parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"isPaused":{"type":"boolean","description":"Whether the team is currently paused=true or not=false."}}}}}}}}},"/internal/teams/enrichments":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Internal - Get team enrichments by IDs","description":"Retrieves enriched details for specified teams by their IDs. Returns minimal team information including ID, name, organization ID, and team type (standard or personal).","parameters":[{"name":"ids","in":"query","description":"An array of team IDs to retrieve enrichments for.","required":true,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"integer","minimum":0},"minItems":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"teams":{"type":"array","items":{"type":"object","description":"Represents a team's enriched details.","properties":{"id":{"type":"integer","format":"int64","description":"The team's unique identifier."},"name":{"type":"string","description":"The name of the team."},"organizationId":{"type":"integer","format":"int64","description":"The ID of the organization that owns this team."},"deleted":{"type":"boolean","description":"True when the team itself, or the organization that owns it, is deleted. Deleted teams are still returned."},"type":{"type":"string","enum":["standard","personal"],"description":"The team type. 'standard' represents a collaborative team space, 'personal' represents a single-user private sandbox."}},"required":["id","name","organizationId","deleted","type"],"example":{"id":123,"name":"Engineering Team","organizationId":456,"deleted":false,"type":"standard"}}}},"required":["teams"]}}}},"400":{"description":"Bad request - empty IDs array or invalid parameters"},"401":{"description":"Unauthorized - caller is not authorized for internal access"},"500":{"description":"Internal server error"}}}},"/internal/data-structures/{dataStructureId}":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Internal - Get a data structure (UDT) by id","description":"Retrieves a single data structure (UDT) by id, including its spec. Intended for service-to-service callers (ISC JWT) that do not carry user identity. The team-scoped, permission-checked variant is `GET /data-structures/{dataStructureId}`.","parameters":[{"name":"dataStructureId","in":"path","description":"The ID of the data structure.","required":true,"schema":{"type":"integer","format":"int64","minimum":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"dataStructure":{"type":"object","properties":{"id":{"type":"integer","format":"int64","description":"The data structure's unique identifier."},"name":{"type":"string","description":"The name of the data structure."},"teamId":{"type":"integer","description":"The team that owns the data structure."},"spec":{"type":"array","description":"Field specification describing the structure's shape.","items":{"type":"object","additionalProperties":true}},"strict":{"type":"boolean","description":"Whether the structure enforces strict parsing."}},"example":{"id":5,"name":"Customer profile","teamId":42,"spec":[{"name":"firstName","type":"text"},{"name":"age","type":"number"}],"strict":true}}}}}}},"400":{"description":"Invalid path parameter (e.g. dataStructureId is not a positive integer)."},"404":{"description":"Data structure not found."}}}},"/internal/hooks/register":{"post":{"tags":["Internal"],"x-internal":true,"summary":"Register a hook","description":"Registers a new hook (webhook/mailhook) for a team using ISC authorization. Only the Executor may call this endpoint — any other caller is rejected with `SC500`, since reaching this route is an integration bug rather than a client-facing access denial.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hookName":{"type":"string","minLength":1,"description":"The name to give the new hook.","example":"My webhook"},"typeName":{"type":"string","minLength":1,"description":"The hook type name, as registered by the app that owns it.","example":"test-webhook"},"teamId":{"type":"integer","minimum":1,"description":"The team the hook belongs to.","example":123},"userId":{"type":"integer","minimum":1,"description":"The user performing the registration.","example":456},"data":{"type":"object","nullable":true,"additionalProperties":true,"description":"Arbitrary hook data, stored encrypted.","example":{"secret":"hook-secret-value"}},"externalAccountId":{"type":"string","nullable":true,"description":"External account identifier to associate with the hook.","example":"external-account-123"},"detachAccountId":{"type":"integer","minimum":1,"description":"Connection ID to be used when performing the hook's detach RPC.","example":789},"keyIds":{"type":"array","items":{"type":"integer","minimum":1},"description":"Ids of keys to associate with the hook for the Authenticated Webhooks feature.","example":[1,2]}},"required":["hookName","typeName","teamId","userId"]},"examples":{"register-hook":{"summary":"Register a hook with initial data","value":{"hookName":"My webhook","typeName":"test-webhook","teamId":123,"userId":456,"data":{"secret":"hook-secret-value"}}}}}}},"responses":{"200":{"description":"Successfully registered the hook","content":{"application/json":{"schema":{"type":"object","properties":{"hook":{"type":"object","properties":{"id":{"type":"integer","example":1001},"name":{"type":"string","example":"My webhook"},"udid":{"type":"string","example":"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"},"data":{"type":"object","additionalProperties":true,"example":{"secret":"hook-secret-value"}},"type":{"type":"string","example":"web"},"theme":{"type":"string","example":"test-webhook"},"editable":{"type":"boolean","example":true},"flags":{"type":"object","additionalProperties":true,"example":{}},"url":{"type":"string","description":"The public URL the hook can be reached at.","example":"https://hook.make.com/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"}},"required":["id","name","udid","data","type","theme","editable","flags","url"]}},"required":["hook"]},"examples":{"register-hook":{"summary":"Registered hook","value":{"hook":{"id":1001,"name":"My webhook","udid":"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6","data":{"secret":"hook-secret-value"},"type":"web","theme":"test-webhook","editable":true,"flags":{},"url":"https://hook.make.com/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"}}}}}}},"400":{"description":"Invalid or missing required field","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"SC400"},"message":{"type":"string","example":"Bad Request"}}}}}},"401":{"description":"Unauthorized - Missing or invalid ISC authorization","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM001"},"message":{"type":"string","example":"Access denied."}}}}}},"500":{"description":"Caller is not the Executor","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"SC500"},"message":{"type":"string","example":"Only the Executor can register hooks remotely."}}}}}}}}},"/internal/hooks/{hookId}/data":{"put":{"tags":["Internal"],"x-internal":true,"summary":"Update a hook's data","description":"Updates the stored data and/or associated key ids of a hook using ISC authorization. Only the Executor may call this endpoint — any other caller is rejected with `SC500`, since reaching this route is an integration bug rather than a client-facing access denial. Note: the underlying procedure does not check hook existence up front — an unknown `hookId` fails with `IM002` (its permission check runs against a null team) rather than a dedicated not-found error.","parameters":[{"name":"hookId","in":"path","required":true,"description":"The id of the hook to update.","schema":{"type":"integer","minimum":1},"example":1001}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"integer","minimum":1,"description":"The user performing the update.","example":456},"data":{"type":"object","nullable":true,"additionalProperties":true,"description":"The new hook data, stored encrypted. Replaces the existing data.","example":{"secret":"updated-value"}},"keyIds":{"type":"array","items":{"type":"integer","minimum":1},"description":"Ids of keys to associate with the hook for the Authenticated Webhooks feature.","example":[1,2]}},"required":["userId"]},"examples":{"update-data":{"summary":"Update the hook's data","value":{"userId":456,"data":{"secret":"updated-value"}}}}}}},"responses":{"200":{"description":"Successfully updated the hook","content":{"application/json":{"schema":{"type":"object","properties":{"hook":{"type":"object","properties":{"id":{"type":"integer","example":1001}},"required":["id"]}},"required":["hook"]},"examples":{"update-data":{"summary":"Updated hook","value":{"hook":{"id":1001}}}}}}},"400":{"description":"Invalid or missing required field","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"SC400"},"message":{"type":"string","example":"Bad Request"}}}}}},"401":{"description":"Unauthorized - Missing or invalid ISC authorization","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM001"},"message":{"type":"string","example":"Access denied."}}}}}},"403":{"description":"Insufficient rights, also returned for an unknown hookId","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM002"},"message":{"type":"string","example":"Insufficient rights"}}}}}},"500":{"description":"Caller is not the Executor","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"SC500"},"message":{"type":"string","example":"Only the Executor can update hooks remotely."}}}}}}}}},"/internal/hooks/{hookId}/uid":{"put":{"tags":["Internal"],"x-internal":true,"summary":"Update a hook's external account id","description":"Updates the external account id associated with a hook using ISC authorization. Passing `null` clears the external account id. Only the Executor may call this endpoint — any other caller is rejected with `SC500`, since reaching this route is an integration bug rather than a client-facing access denial. Note: the underlying procedure does not check hook existence up front — an unknown `hookId` fails with `IM002` (its permission check runs against a null team) rather than a dedicated not-found error.","parameters":[{"name":"hookId","in":"path","required":true,"description":"The id of the hook to update.","schema":{"type":"integer","minimum":1},"example":1001}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"integer","minimum":1,"description":"The user performing the update.","example":456},"externalAccountId":{"type":"string","nullable":true,"description":"The external account id to associate with the hook, or `null` to clear it.","example":"external-uid-value"}},"required":["userId","externalAccountId"]},"examples":{"set-external-account-id":{"summary":"Set the hook's external account id","value":{"userId":456,"externalAccountId":"external-uid-value"}},"clear-external-account-id":{"summary":"Clear the hook's external account id","value":{"userId":456,"externalAccountId":null}}}}}},"responses":{"200":{"description":"Successfully updated the hook","content":{"application/json":{"schema":{"type":"object","properties":{"hook":{"type":"object","properties":{"id":{"type":"integer","example":1001}},"required":["id"]}},"required":["hook"]},"examples":{"set-external-account-id":{"summary":"Updated hook","value":{"hook":{"id":1001}}}}}}},"400":{"description":"Invalid or missing required field","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"SC400"},"message":{"type":"string","example":"Bad Request"}}}}}},"401":{"description":"Unauthorized - Missing or invalid ISC authorization","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM001"},"message":{"type":"string","example":"Access denied."}}}}}},"403":{"description":"Insufficient rights, also returned for an unknown hookId","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM002"},"message":{"type":"string","example":"Insufficient rights"}}}}}},"500":{"description":"Caller is not the Executor","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"SC500"},"message":{"type":"string","example":"Only the Executor can update a hook's external account id remotely."}}}}}}}}},"/internal/hooks/{hookId}/unregister":{"post":{"tags":["Internal"],"x-internal":true,"summary":"Unregister a hook","description":"Deletes a hook using ISC authorization, forcing removal and confirming the operation on behalf of the caller. Only the Executor may call this endpoint — any other caller is rejected with `SC500`, since reaching this route is an integration bug rather than a client-facing access denial. Note: the underlying procedure does not check hook existence up front — an unknown `hookId` fails with `IM002` (its permission check runs against a null team) rather than a dedicated not-found error.","parameters":[{"name":"hookId","in":"path","required":true,"description":"The id of the hook to unregister.","schema":{"type":"integer","minimum":1},"example":1001}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"integer","minimum":1,"description":"The user performing the unregistration.","example":456}},"required":["userId"]},"examples":{"unregister-hook":{"summary":"Unregister a hook","value":{"userId":456}}}}}},"responses":{"200":{"description":"Successfully unregistered the hook","content":{"application/json":{"schema":{"type":"object","properties":{"hook":{"type":"object","properties":{"data":{"type":"object","nullable":true,"additionalProperties":true,"description":"The hook's decrypted data at the time it was deleted.","example":{"secret":"hook-secret-value"}},"url":{"type":"string","description":"The public URL the hook was reachable at.","example":"https://hook.make.com/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"}},"required":["data","url"]}},"required":["hook"]},"examples":{"unregister-hook":{"summary":"Unregistered hook","value":{"hook":{"data":{"secret":"hook-secret-value"},"url":"https://hook.make.com/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"}}}}}}},"400":{"description":"Invalid or missing required field","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"SC400"},"message":{"type":"string","example":"Bad Request"}}}}}},"401":{"description":"Unauthorized - Missing or invalid ISC authorization","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM001"},"message":{"type":"string","example":"Access denied."}}}}}},"403":{"description":"Insufficient rights, also returned for an unknown hookId","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM002"},"message":{"type":"string","example":"Insufficient rights"}}}}}},"500":{"description":"Caller is not the Executor","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"SC500"},"message":{"type":"string","example":"Only the Executor can unregister hooks remotely."}}}}}}}}},"/internal/entity-placements/check":{"post":{"tags":["Internal"],"x-internal":true,"summary":"Check the entity placements of a blueprint","description":"Returns the save-time locked-entity verdict for a blueprint the caller is about to execute: rejects with `IM002` when a module places a locked connection or key the user may not use and that placement is not already stored unchanged. Only services that gate a manual execution on this verdict may call it — any other caller is rejected with `SC500`, since reaching this route is an integration bug rather than a client-facing access denial. Fail-closed: when the verdict cannot be reached, the response is an `IM016` error, never an allow. While the organization's enforcement flag is off (log-only rollout), a violation is logged and the response is an allow — the same softening the save hooks apply; `IM016` stays fail-closed in both modes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"One of `scenarioId`, `dlqId`, `templateId` or `teamId` locates the blueprint. When more than one is present they are resolved in that order of precedence and the others are ignored — in particular, `templateId` always wins over `teamId` so a caller cannot override the team a template resolves server-side.","anyOf":[{"type":"object","properties":{"userId":{"type":"integer","minimum":1,"description":"The user the execution runs as.","example":456},"blueprint":{"type":"object","additionalProperties":true,"description":"The blueprint about to be executed."},"scenarioId":{"type":"integer","minimum":1,"description":"The scenario whose stored blueprint (its unsaved draft when it has one) is compared against. The team is taken from the scenario itself.","example":123},"fromAdmin":{"type":"boolean","description":"Untrusted hint that the execution comes from the admin UI. The check verifies the user's `scenario verify` HQ-admin permission itself before applying the same bypass the admin save endpoints do; a spoofed flag falls through to the normal verdict."}},"required":["userId","blueprint","scenarioId"]},{"type":"object","properties":{"userId":{"type":"integer","minimum":1,"description":"The user the execution runs as.","example":456},"blueprint":{"type":"object","additionalProperties":true,"description":"The blueprint about to be executed."},"dlqId":{"type":"string","minLength":1,"description":"The incomplete execution (DLQ record) being retried. Its stored blueprint is the comparison baseline — itself already guarded, since every `dlq_set` edit runs the same guard. The team is taken from the DLQ's owning scenario.","example":"5f9b2c1e-0000-4000-8000-000000000000"},"fromAdmin":{"type":"boolean","description":"Untrusted hint that the execution comes from the admin UI. The check verifies the user's `scenario verify` HQ-admin permission itself before applying the same bypass the admin save endpoints do; a spoofed flag falls through to the normal verdict."}},"required":["userId","blueprint","dlqId"]},{"type":"object","properties":{"userId":{"type":"integer","minimum":1,"description":"The user the execution runs as.","example":456},"blueprint":{"type":"object","additionalProperties":true,"description":"The blueprint about to be executed."},"templateId":{"type":"integer","minimum":1,"description":"The template being run. The team is taken from the template record itself — a caller cannot influence which team is checked, even by also sending `teamId`. The template's own stored blueprint is the OLD side, the same grandfathering `scenarioId` and `dlqId` get: it is already guarded at save, so a module left untouched since then still runs after its connection is locked, while an edit or a new placement blocks. A template with no team (some templates have none) is unaffected — there is nothing team-scoped to check.","example":321},"fromAdmin":{"type":"boolean","description":"Untrusted hint that the execution comes from the admin UI. The check verifies the user's `scenario verify` HQ-admin permission itself before applying the same bypass the admin save endpoints do; a spoofed flag falls through to the normal verdict."}},"required":["userId","blueprint","templateId"]},{"type":"object","properties":{"userId":{"type":"integer","minimum":1,"description":"The user the execution runs as.","example":456},"blueprint":{"type":"object","additionalProperties":true,"description":"The blueprint about to be executed."},"teamId":{"type":"integer","minimum":1,"description":"The team of a scenario that was never saved. Without a stored blueprint every denied placement is a new one.","example":789},"fromAdmin":{"type":"boolean","description":"Untrusted hint that the execution comes from the admin UI. The check verifies the user's `scenario verify` HQ-admin permission itself before applying the same bypass the admin save endpoints do; a spoofed flag falls through to the normal verdict."}},"required":["userId","blueprint","teamId"]}]},"examples":{"check-saved-scenario":{"summary":"Manual execution of a stored scenario","value":{"userId":456,"scenarioId":123,"blueprint":{"name":"My scenario","flow":[{"id":1,"module":"app#my-app:CreateThing","version":1,"parameters":{"__IMTCONN__":42}}]}}},"check-dlq-retry":{"summary":"Retry of an incomplete execution","value":{"userId":456,"dlqId":"5f9b2c1e-0000-4000-8000-000000000000","blueprint":{"name":"My scenario","flow":[{"id":1,"module":"app#my-app:CreateThing","version":1,"parameters":{"__IMTCONN__":42}}]}}},"check-unsaved-scenario":{"summary":"Manual execution of a scenario that was never saved","value":{"userId":456,"teamId":789,"blueprint":{"name":"My scenario","flow":[{"id":1,"module":"app#my-app:CreateThing","version":1,"parameters":{"__IMTCONN__":42}}]}}},"check-template-execution":{"summary":"Execution of a template","value":{"userId":456,"templateId":321,"blueprint":{"name":"My template","flow":[{"id":1,"module":"app#my-app:CreateThing","version":1,"parameters":{"__IMTCONN__":42}}]}}}}}}},"responses":{"200":{"description":"Every placement in the blueprint is allowed","content":{"application/json":{"schema":{"type":"object","properties":{"allowed":{"type":"boolean","example":true}},"required":["allowed"]}}}},"400":{"description":"Invalid or missing required field","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"SC400"},"message":{"type":"string","example":"Bad Request"}}}}}},"401":{"description":"Unauthorized - Missing or invalid ISC authorization","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM001"},"message":{"type":"string","example":"Access denied."}}}}}},"403":{"description":"The blueprint places a locked connection or key the user may not use","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM002"},"message":{"type":"string","example":"Insufficient rights to perform the action."},"metadata":{"type":"array","description":"The modules the verdict rejected, each with the locked entities it places. Part of the contract: imt-web-streamer forwards this to its client (the execute ack's 3rd argument) so the editor can point at the offending modules.","items":{"type":"object","properties":{"moduleId":{"type":"integer","example":3},"moduleName":{"type":"string","example":"jotform:createForm"},"entities":{"type":"array","items":{"type":"object","properties":{"entityType":{"type":"string","enum":["connection","key"],"example":"connection"},"entityId":{"type":"integer","example":2}},"required":["entityType","entityId"]}}},"required":["moduleId","moduleName","entities"]}}}}}}},"422":{"description":"The verdict could not be reached, so the execution is denied","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"IM016"},"message":{"type":"string","example":"The use of locked connections and keys could not be verified."}}}}}},"500":{"description":"Caller is not an allowed execution gate","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"SC500"},"message":{"type":"string","example":"Only the Web Streamer can check entity placements remotely."}}}}}}}}},"/internal/sdk/apps/{appName}/{appVersion}/access":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Check whether an SDK app version is installed in an organization","description":"Reports whether the SDK app version has an `apps.access` row for the organization — the runtime gate the Executor checks before running one of the app's Endpoints, because that execution is billed to this organization.\n\nDeliberately stricter than the `apps.app_check_access` routine used elsewhere: authorship of the app, its `opensource` flag and admin rights all grant no pass. Only an explicit installation in this organization counts.\n\nA missing installation is reported as `installed: false` with a `200`, not a `403` — the caller owns the resulting status and message, which is what lets the Executor name both the app and the organization in its own error.\n\nThe organization's deletion state is **not** checked: `apps.access` keeps its row when an organization is soft-deleted, so a caller that cares must check that separately.\n","parameters":[{"name":"appName","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z][0-9a-z-]+[0-9a-z]$","minLength":3,"maxLength":37},"description":"The app's bare name, without the `app#` prefix — same as the sibling `/internal/sdk/apps/...` routes. The 37-character bound covers the 30-character base name plus the `-xxxxxx` suffix `apps.app_add` appends for authors without the `allow_apps` feature.\n","examples":{"installed":{"summary":"App installed in the organization","value":"my-custom-app"},"suffixed":{"summary":"App whose name carries the generated suffix","value":"my-custom-app-a1b2c3"},"not-installed":{"summary":"App not installed in the organization","value":"someone-elses-app"}}},{"name":"appVersion","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":32767},"description":"The app's major version. Installations are tracked per version.","examples":{"installed":{"summary":"Installed version","value":1},"suffixed":{"summary":"Installed version","value":1},"not-installed":{"summary":"Version that is not installed","value":1}}},{"name":"organizationId","in":"query","required":true,"schema":{"type":"integer","minimum":1,"maximum":2147483647},"description":"The organization the execution is billed to.","examples":{"installed":{"summary":"Organization holding the access row","value":1234},"suffixed":{"summary":"Organization holding the access row","value":1234},"not-installed":{"summary":"Organization without an access row for this app","value":5678}}}],"responses":{"200":{"description":"Check completed (the app may or may not be installed).","content":{"application/json":{"schema":{"type":"object","properties":{"access":{"type":"object","properties":{"installed":{"type":"boolean","description":"`true` only when an `apps.access` row exists for this app name, app version and organization.\n"}}}}},"examples":{"installed":{"summary":"App is installed in the organization","value":{"access":{"installed":true}}},"suffixed":{"summary":"Suffixed app name is installed in the organization","value":{"access":{"installed":true}}},"not-installed":{"summary":"App is not installed in the organization","value":{"access":{"installed":false}}}}}}},"400":{"description":"`appName` exceeds 37 characters, `appVersion` is outside 1-32767, or `organizationId` is missing or outside 1-2147483647. A malformed `appName` or non-numeric `appVersion` doesn't match this route at all and is handled elsewhere in the routing chain, not by this endpoint.\n","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["SC400"]},"message":{"type":"string"},"suberrors":{"type":"array","items":{"type":"object","required":["name","message"],"properties":{"name":{"type":"string"},"message":{"type":"string"}}}}}},"examples":{"invalid-version":{"summary":"App version exceeds the PostgreSQL smallint limit","value":{"code":"SC400","message":"Bad Request","suberrors":[{"name":"ValidationError","message":"Expected integer to be less or equal to 32767"}]}}}}}},"401":{"description":"Missing or invalid ISC authorization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["IM001"]},"message":{"type":"string"}}},"examples":{"missing-authorization":{"summary":"Request has no ISC authorization","value":{"code":"IM001","message":"Access denied"}}}}}}}}},"/internal/sdk/apps/{appName}/{appVersion}/modules/{moduleName}/runtime":{"get":{"tags":["Internal"],"x-internal":true,"summary":"Get an SDK module runtime snapshot","description":"Returns the complete runtime snapshot the Executor needs to run an SDK Action or Search module. The snapshot includes the merged API and custom IML functions, decrypted common data, module fields, normalized connection aliases, merged flags, app metadata and pricing fields. App authors receive pending app and module changes; other callers receive saved values. At least one of `forUserId` or `forTeamId` is required. When both are present, team installation determines app access and the user identity determines authorship, private-module visibility and admin fallback.\n","parameters":[{"name":"appName","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z][0-9a-z-]+[0-9a-z]$","minLength":3,"maxLength":37},"description":"The app's bare name without the `app#` prefix.","examples":{"saved-runtime":{"value":"acme-crm"},"author-runtime":{"value":"acme-crm"}}},{"name":"appVersion","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":32767},"description":"The app's major version.","examples":{"saved-runtime":{"value":1},"author-runtime":{"value":1}}},{"name":"moduleName","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z][0-9a-zA-Z]+[0-9a-zA-Z]$","minLength":3,"maxLength":48},"description":"The module name within the app version.","examples":{"saved-runtime":{"value":"GetContacts"},"author-runtime":{"value":"GetContacts"}}},{"name":"forUserId","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":2147483647},"description":"User identity used for authorship, private-module visibility and admin permission fallback.","examples":{"saved-runtime":{"value":12001},"author-runtime":{"value":12002}}},{"name":"forTeamId","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":2147483647},"description":"Team whose organization installation and existing scenario usage are evaluated.","examples":{"saved-runtime":{"value":31001},"author-runtime":{"value":31002}}}],"responses":{"200":{"description":"Runtime snapshot assembled successfully.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["module"],"properties":{"module":{"type":"object","additionalProperties":false,"required":["typeId","api","common","parameters","expect","interface","allowedAccountNames","flags","debug","manifestVersion","appVersionFull","billable","centicreditsFormula","centicreditsFormulaMeta"],"properties":{"typeId":{"type":"integer","enum":[4,9],"description":"Module type. `4` is Action and `9` is Search."},"api":{"description":"App base and module API merged with the app's custom IML functions."},"common":{"description":"Decrypted app common data used by the module runtime."},"parameters":{"description":"Module input parameters, including the generated `__IMTCONN__` parameter when connections are attached."},"expect":{"description":"Module expectation definition."},"interface":{"description":"Module output interface definition."},"allowedAccountNames":{"type":"array","items":{"type":"string"},"description":"Normalized connection aliases accepted by the module."},"flags":{"description":"Deep merge of app-level and module-level runtime flags."},"debug":{"type":"boolean","description":"Whether the caller receives the author's draft runtime."},"manifestVersion":{"type":"integer"},"appVersionFull":{"type":"string"},"billable":{"type":"boolean"},"centicreditsFormula":{"type":"string","nullable":true},"centicreditsFormulaMeta":{"type":"string","nullable":true}}}}},"examples":{"saved-runtime":{"summary":"Saved Action runtime for an installed user","value":{"module":{"typeId":4,"api":{"baseUrl":"https://api.example.com","url":"/contacts","iml":{"functions":{"normalize":"return input;"}},"metadata":{"account":{"type":"oauth","version":2}}},"common":{"region":"eu1"},"parameters":[{"name":"__IMTCONN__","label":"Connection","type":"account:acme-oauth","required":true},{"name":"limit","type":"number"}],"expect":[],"interface":[{"name":"id","type":"text"}],"allowedAccountNames":["acme-oauth"],"flags":{"response":{"flatten":true}},"debug":false,"manifestVersion":2,"appVersionFull":"1.4.0","billable":true,"centicreditsFormula":"100","centicreditsFormulaMeta":null}}},"author-runtime":{"summary":"Pending Search runtime for the app author","value":{"module":{"typeId":9,"api":{"baseUrl":"https://draft-api.example.com","url":"/contacts/search","iml":{"functions":{"normalize":"return draftInput;"}}},"common":{"region":"eu1"},"parameters":[{"name":"query","type":"text"}],"expect":[],"interface":[],"allowedAccountNames":[],"flags":{},"debug":true,"manifestVersion":2,"appVersionFull":"1.4.0","billable":true,"centicreditsFormula":null,"centicreditsFormulaMeta":null}}}}}}},"400":{"description":"Invalid path or identity input, or a module type other than Action or Search.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["SC400","IM005"]},"message":{"type":"string"}}},"example":{"code":"SC400","message":"Only Action and Search modules are supported."}}}},"401":{"description":"Missing or invalid ISC authorization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["IM001"]},"message":{"type":"string"}}},"example":{"code":"IM001","message":"Access denied."}}}},"403":{"description":"Caller is not the Executor, cannot access the app, or cannot access the module.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["SC403","IM002"]},"message":{"type":"string"}}},"example":{"code":"SC403","message":"Access denied."}}}},"404":{"description":"The requested module does not exist in the app version.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["IM612"]},"message":{"type":"string"}}},"example":{"code":"IM612","message":"Module not found."}}}}}}},"/keys":{"get":{"tags":["Keys"],"summary":"List keys","description":"Gets the list of keys in your custom keychain. You can use the `typeName` query parameter to filter your keys based on their type. Run the [list of key types](./get--keys--types.md) API call to get a list of available key types.\n","security":[{"token":["keys:read"]}],"parameters":[{"name":"teamId","description":"The ID of the team.","in":"query","schema":{"type":"integer"},"required":true,"example":22},{"name":"typeName","in":"query","description":"Use the key type to get only keys with the specified type. You can use the API call `GET /keys/types` to list available key types.","schema":{"type":"string","enum":["aes-key","apikeyauth","apn","basicauth","clientcertauth","eet","gpg-private","gpg-public","webpay"]},"example":"basicauth"},{"name":"cols[]","in":"query","description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for each column that you want included. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","schema":{"type":"array","items":{"type":"string","enum":["id","name","typeName","teamId","packageName","theme","scenarioUsages"]}},"examples":{"list-all":{"value":["id","name","typeName","teamId","packageName","theme","scenarioUsages"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"typeName":{"type":"string"},"teamId":{"type":"integer"},"packageName":{"type":"string"},"theme":{"type":"string","format":"color"},"visibility":{"type":"string","enum":["team","locked"],"description":"Entity-tier visibility. With `locked` the key is restricted to its access list; `team` makes it visible to the whole team. Only returned when explicitly requested via `cols[]=visibility`."},"scenarioUsages":{"type":"array","description":"Scenarios that use this key. Only returned when explicitly requested via `cols[]=scenarioUsages`.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}}}}}},"examples":{"list":{"summary":"List keys","description":"Get the ID and `name` of all keys in your team.","value":{"keys":[{"id":1,"name":"My HTTP Basic Auth key"},{"id":2,"name":"My HTTP Basic Auth key"}]}},"list-all":{"summary":"List all key metadata","description":"Gets all available key metadata.","value":{"keys":[{"id":1,"name":"My HTTP Basic Auth key","typeName":"basicauth","teamId":4,"packageName":null,"theme":"#007ee5","scenarioUsages":[{"id":123,"name":"My Scenario"}]},{"id":2,"name":"My HTTP Basic Auth key","typeName":"basicauth","teamId":4,"packageName":null,"theme":"#007ee5","scenarioUsages":[]}]}}}}}}}},"post":{"tags":["Keys"],"summary":"Create a key","description":"Creates a key in your keychain.\n\n Use the [list of key types](./get--keys--types.md) API call to get a list of available key types for the `typeName` parameter. Specify additional parameters in the `parameters` object based on the key type.\n","security":[{"token":["keys:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"type":"integer","description":"The ID of the team."},"name":{"type":"string","description":"The name of the key."},"typeName":{"type":"string","description":"Use the key type to get only keys with the specified type. You can use the API call `GET /keys/types` to list available key types."},"parameters":{"type":"object","description":"Additional parameters required to create the key.\n\nCheck the [list of key types](./get--keys--types.md) API call for the parameters you need to specify.\n"},"visibility":{"type":"string","enum":["team","locked"],"default":"team","description":"Entity-tier visibility of the created key. With `locked` the key is restricted to its access list from the moment it is created, with the creator as its sole admin. Requires the *Locked connections* feature to be enabled for the organization; otherwise the request fails with `IM903` (HTTP 400). When the access list cannot be provisioned, the request fails with HTTP 422 and the key is not created. Omitted or `team`, the key is visible to the whole team."}},"required":["teamId","name","typeName","parameters"]},"examples":{"basicauth":{"value":{"teamId":22,"name":"My HTTP Basic Auth key","typeName":"basicauth","parameters":{"authUser":"Martin","authPass":"your-password"}}},"apikeyauth":{"value":{"teamId":22,"name":"My API key auth key","typeName":"apikeyauth","parameters":{"name":"api-key","key":"your-api-key","placement":"header"}}},"basicauth-locked":{"summary":"Key created locked","description":"Creates the key with `visibility: locked` — restricted to its access list, with the creator as its sole admin.","value":{"teamId":22,"name":"My HTTP Basic Auth key","typeName":"basicauth","visibility":"locked","parameters":{"authUser":"Martin","authPass":"your-password"}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"typeName":{"type":"string"},"teamId":{"type":"integer"},"packageName":{"type":"string"},"theme":{"type":"string","format":"color"},"visibility":{"type":"string","enum":["team","locked"],"description":"Entity-tier visibility. With `locked` the key is restricted to its access list; `team` makes it visible to the whole team. Only returned when explicitly requested via `cols[]=visibility`."},"scenarioUsages":{"type":"array","description":"Scenarios that use this key. Only returned when explicitly requested via `cols[]=scenarioUsages`.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}}}}},"examples":{"basicauth":{"summary":"Basic Authentication","description":"Create a key for an API with the basic authentication.","value":{"key":{"id":17,"name":"Basic Auth","typeName":"basicauth","teamId":22,"packageName":null,"theme":"#007ee5"}}},"apikeyauth":{"summary":"API key Auth","description":"Create a key for an API with the API key authentication.","value":{"key":{"id":18,"name":"My API key Auth key","typeName":"apikeyauth","teamId":22,"packageName":null,"theme":"#007ee5"}}},"basicauth-locked":{"summary":"Key created locked","description":"The response shape of a locked key is identical — visibility is not returned by this endpoint.","value":{"key":{"id":19,"name":"My HTTP Basic Auth key","typeName":"basicauth","teamId":22,"packageName":null,"theme":"#007ee5"}}}}}}},"400":{"description":"The `visibility` value is invalid (`IM005`), or `visibility: locked` was sent while the *Locked connections* feature is not enabled for the organization (`IM903`, returned while the `web_api_locked_connections` feature flag is off).\n"},"422":{"description":"The access list of a `locked` key could not be provisioned (`IM016`). The key is not created — the request can be retried.\n"}}}},"/keys/types":{"get":{"tags":["Keys"],"summary":"List key types","description":"Gets the list of available key types.","security":[{"token":["keys:read"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"keysTypes":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}}}},"componentType":{"type":"string"},"managed":{"type":"boolean","description":"When true, this key type is server-managed: its data is written only by a dedicated setup flow, and it is hidden from the generic key list unless explicitly requested via `?typeName=`. Absent/false for all other key types."},"creation":{"type":"object","description":"Describes how to create a key of this managed type. Only present when `managed` is true.","properties":{"mode":{"type":"string","example":"interactive"},"url":{"type":"string","example":"/ai-browser/context-setups"},"window":{"type":"object","properties":{"width":{"type":"integer"},"height":{"type":"integer"}}}}},"author":{"type":"string"},"version":{"type":"string"},"theme":{"type":"string","format":"color"},"icon":{"type":"string"}}}}}},"example":{"keysTypes":[{"name":"aes-key","label":"AES","parameters":[{"name":"key","type":"text","label":"Key","required":true},{"name":"keyEncoding","label":"Key Encoding","type":"select","required":true,"default":"hex","options":[{"label":"Base 64","value":"base64"},{"label":"Hexadecimal","value":"hex"},{"label":"Plain Text","value":"plain"}]}],"componentType":"key","author":"Patrik Simek","version":"3.0.12","theme":"#fa6f57","icon":"/img/packages/aes-key.png"},{"name":"apikeyauth","label":"API Key Auth","parameters":[{"name":"key","label":"Key","type":"password","required":true},{"name":"placement","label":"API Key placement","help":"Define where to place the API Key.","type":"select","required":true,"default":"header","options":[{"label":"In the header","value":"header"},{"label":"In the query string","value":"qs"}]},{"name":"name","label":"API Key parameter name","type":"text","default":"X-API-Key","required":true}],"componentType":"key","author":"Petr Malimanek","version":"3.31.4","theme":"#007ee5","icon":"/img/packages/apikeyauth.png"},{"label":"Apple Push Notifications","name":"apn","parameters":[{"label":"Private Key","multiline":true,"required":true,"type":"pkey","name":"privateKey","help":"If you're using Provider Authentication Tokens, insert content of acquired .p8 file."},{"label":"Authentication method","name":"method","type":"select","default":"tokens","options":[{"label":"Provider Authentication Tokens","value":"tokens","nested":[{"label":"Key ID","required":true,"type":"text","name":"keyId"},{"label":"Team ID","required":true,"type":"text","name":"teamId"}]},{"label":"Certificate","value":"cert","nested":[{"label":"Certificate","required":true,"multiline":true,"type":"cert","name":"certificate"}]}]},{"required":true,"label":"Production","default":false,"name":"production","type":"boolean"}],"componentType":"key","author":"Patrik Simek","version":"1.1.6","theme":"#666666","icon":"/img/packages/apn.png"},{"name":"basicauth","label":"HTTP Basic Auth","parameters":[{"name":"authUser","label":"Username","type":"text"},{"name":"authPass","label":"Password","type":"password"}],"componentType":"key","author":"Petr Malimanek","version":"3.31.4","theme":"#007ee5","icon":"/img/packages/basicauth.png"}]}}}}}}},"/keys/{keyId}":{"get":{"tags":["Keys"],"summary":"Get key details","description":"Gets details of the specified key.","security":[{"token":["keys:read"]}],"parameters":[{"name":"keyId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the key.","example":16},{"name":"cols[]","in":"query","description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \\\"Filtering\\\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","schema":{"type":"array","items":{"type":"string","enum":["id","name","typeName","teamId","packageName","theme","visibility"]}},"examples":{"all-cols":{"value":["id","name","typeName","teamId","packageName","theme","visibility"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"typeName":{"type":"string"},"teamId":{"type":"integer"},"packageName":{"type":"string"},"theme":{"type":"string","format":"color"},"visibility":{"type":"string","enum":["team","locked"],"description":"Entity-tier visibility. With `locked` the key is restricted to its access list; `team` makes it visible to the whole team. Only returned when explicitly requested via `cols[]=visibility`."},"scenarioUsages":{"type":"array","description":"Scenarios that use this key. Only returned when explicitly requested via `cols[]=scenarioUsages`.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}}}}},"examples":{"default-response":{"summary":"Default response","description":"Get the key ID and `name` in the response.","value":{"key":{"id":1,"name":"My secret key"}}},"all-cols":{"summary":"All metadata","description":"Get all key metadata","value":{"key":{"id":1,"name":"My Secret Key","typeName":"digest-secret","teamId":1,"packageName":"keychain-pro","theme":"#010399","visibility":"team"}}}}}}},"403":{"description":"The key is restricted to its access list and the caller is not on it with permission to use it (`IM002`).\n"}}},"patch":{"tags":["Keys"],"summary":"Update a key","description":"Updates a key `name`, connection parameters, or both with the data specified in the request body. If you don't specify a parameter, Make keeps the original value.\n\nUse the `GET /key-types` API call to find out which parameters you need to specify in the `parameters` object based on the key type.\n","security":[{"token":["keys:write"]}],"parameters":[{"name":"keyId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the key.","example":16}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"},"examples":{"update-name":{"value":{"name":"Updated basic auth key"}},"update-connection":{"value":{"name":"HTTP basic auth key","parameters":{"authUser":"Test user","authPass":"test-password"}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"typeName":{"type":"string"},"teamId":{"type":"integer"},"packageName":{"type":"string"},"theme":{"type":"string","format":"color"},"visibility":{"type":"string","enum":["team","locked"],"description":"Entity-tier visibility. With `locked` the key is restricted to its access list; `team` makes it visible to the whole team. Only returned when explicitly requested via `cols[]=visibility`."},"scenarioUsages":{"type":"array","description":"Scenarios that use this key. Only returned when explicitly requested via `cols[]=scenarioUsages`.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}}}}},"examples":{"update-name":{"summary":"Update name","description":"Update the name of the key","value":{"key":{"id":16,"name":"Updated basic auth key","typeName":"basicauth","teamId":22,"packageName":null,"theme":"#007ee5"}}},"update-connection":{"summary":"Update parameters","description":"Update the key parameters","value":{"key":{"id":16,"name":"HTTP basic auth key","typeName":"basicauth","teamId":4,"packageName":null,"theme":"#007ee5"}}}}}}},"403":{"description":"The key is restricted to its access list and the caller is not on it with permission to manage it (`IM002`).\n"}}},"delete":{"tags":["Keys"],"summary":"Delete a key","description":"Deletes the specified key. Use the `confirmed` parameter to confirm deleting the key. Otherwise, you get an error and the key is not deleted.","security":[{"token":["keys:write"]}],"parameters":[{"name":"keyId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the key.","example":16},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true,"description":"Set this parameter to `true` to confirm deleting the key. Otherwise, you get an error and the key is not deleted."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"integer"}}},"example":{"key":16}}}},"403":{"description":"The key is restricted to its access list and the caller is not on it with permission to manage it (`IM002`). A team administrator may still delete such a key only when nobody is left able to manage it.\n"}}}},"/keys/{keyId}/make-locked":{"post":{"tags":["Keys"],"summary":"Lock key","description":"Restricts the key's visibility to its access list (`visibility: locked`). The caller becomes the sole admin\nof the locked key.\n\nCaller rule: only the key's author can lock it, and that author must still be a member of the key's\nteam. A key without an author cannot be locked.\n\nThe operation is idempotent — locking an already locked key succeeds without any change; the caller rule\nabove still applies.\n\nRequires the *Locked connections* feature to be enabled for the organization.\n","security":[{"token":["keys:write"]}],"parameters":[{"name":"keyId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the key.","example":16}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the key."},"visibility":{"type":"string","enum":["locked"],"description":"The visibility of the key after the flip."}}}}},"examples":{"locked":{"value":{"key":{"id":8,"visibility":"locked"}}}}}}},"400":{"description":"The *Locked connections* feature is not enabled for the organization (`IM903`, returned while the `web_api_locked_connections` feature flag is off).\n"},"403":{"description":"The caller is not the key's author (`IM002`).\n"},"404":{"description":"The key does not exist (`IM013`)."},"409":{"description":"The key has no author, or its author is no longer a member of the key's team (`SC409`) — locking is reserved to an author who is still on the team.\n"}}}},"/keys/{keyId}/make-team":{"post":{"tags":["Keys"],"summary":"Make key available to team","description":"Makes a locked key visible to the whole team again (`visibility: team`) and clears the key's entire access\nlist. Only an admin of the locked key can perform the flip. The key's author is not changed.\n\nThe operation is idempotent — flipping an already team-visible key succeeds, provided the caller has the\n`key edit` permission; any residual entries on the key's access list are still cleared.\n\nRequires the *Locked connections* feature to be enabled for the organization.\n","security":[{"token":["keys:write"]}],"parameters":[{"name":"keyId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the key.","example":16}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the key."},"visibility":{"type":"string","enum":["team"],"description":"The visibility of the key after the flip."}}}}},"examples":{"made-team":{"value":{"key":{"id":8,"visibility":"team"}}}}}}},"400":{"description":"The *Locked connections* feature is not enabled for the organization (`IM903`, returned while the `web_api_locked_connections` feature flag is off).\n"},"403":{"description":"The caller is not an admin of the locked key (`IM002`)."},"404":{"description":"The key does not exist (`IM013`)."}}}},"/imt-forms/keys/create":{"get":{"x-internal":true,"operationId":"getKeyCreateForm","tags":["Keys"],"summary":"Get the key create form","description":"Returns an IMT Form for creating a key of the given type. The form is submitted to `POST /imt-forms/keys`.\nRequires KEY_ADD for the team.\n\nThe config holds the hidden `imtKeyTeamId` and `imtKeyTypeName` fields, the `imtKeyName` field, and the\nparameters of the key type manifest, localized to the caller's language.\n\nThe `imtKeyVisibility` (Team access) field lets the creator lock the key to themselves. It is included only\nwhen locked credentials are enabled for the organization, the team is not a private space, the caller has\nKEY_EDIT, and `teamVisibilityOnly` is not set. Without the field, the key is created team-visible.\n\nManaged key types and interactive key types have their own creation flows and get no form.\n","security":[{"token":["imt-forms:read","keys:read"]}],"parameters":[{"name":"teamId","in":"query","required":true,"description":"Team that the key is created in.","schema":{"type":"integer","minimum":1},"example":123},{"name":"typeName","in":"query","required":true,"description":"Key type name.","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]+$"},"example":"basicauth"},{"name":"teamVisibilityOnly","in":"query","required":false,"description":"Omits the Team access field. Set when the key is created for a scenario input, which must be team-visible.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Key create form.","content":{"application/json":{"schema":{"type":"object","required":["config","values","buttons"],"properties":{"config":{"type":"array","items":{"type":"object","additionalProperties":true}},"values":{"type":"object"},"multipart":{"type":"boolean"},"buttons":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"example":{"config":[{"type":"hidden","name":"imtKeyTeamId","default":123},{"type":"hidden","name":"imtKeyTypeName","default":"basicauth","required":true},{"type":"text","name":"imtKeyName","label":"{{!common.name}}","required":true,"default":"{{!keychain.default}}","translateData":{"default":{"service":"HTTP Basic Auth","name":"Jane"}}},{"name":"authUser","label":"Username","type":"text","required":true},{"name":"authPass","label":"Password","type":"password","required":true},{"type":"select","name":"imtKeyVisibility","label":"{{!keychain.permissions.label}}","help":"{{!keychain.permissions.help}}","required":true,"default":"team","options":[{"value":"locked","label":"{{!keychain.permissions.locked.label}}","description":"{{!keychain.permissions.locked.description}}","icon":"lock"},{"value":"team","label":"Marketing","description":"{{!keychain.permissions.team.description}}","icon":"user-group"}]}],"values":{},"multipart":false,"buttons":[{"label":"{{!common.create}}","action":"submit"}]}}}},"400":{"description":"Invalid query, unknown key type, or a managed or interactive key type (IM005)."},"401":{"description":"Authentication, or the imt-forms:read or keys:read token scope, is missing."},"403":{"description":"The caller lacks KEY_ADD for the team."}}}},"/notifications":{"get":{"tags":["Notifications"],"summary":"List notifications","description":"Retrieves a collection of all notifications for the authenticated user. Returned notifications are sorted by ID in descending order.","security":[{"token":["notifications:read"]}],"parameters":[{"name":"unreadOnly","in":"query","schema":{"type":"boolean"},"description":"If set to `true`, this parameter returns only the unread notifications.","example":false},{"name":"imtZoneId","in":"query","schema":{"type":"integer"},"description":"The unique ID of the Make zone. This parameter is required to retrieve notifications from the Make version. For other Make platforms, it can be ignored. The IDs of the zones can be obtained from the `/enums/imt-zones` endpoint.","example":2},{"description":"The value that will be used to sort returned entities by. Notifications can be currently sorted only by ID.","name":"pg[sortBy]","in":"query","schema":{"type":"string","enum":["id"]}},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"notifications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"subject":{"type":"string"},"read":{"type":"string","format":"date-time"},"created":{"type":"string","format":"date-time"},"type":{"type":"integer"}}}},"userUnreadNotifications":{"type":"integer"},"userZoneNotifications":{"type":"array","items":{"type":"object","properties":{"imtZoneId":{"type":"integer"},"unreadNotifications":{"type":"integer"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"example":{"notifications":[{"id":"3","subject":"Encountered error in Integration HTTP scenario","read":"2021-05-14T11:35:22.837Z","created":"2021-05-14T11:18:43.340Z","type":1},{"id":"2","subject":"Encountered error in Integration HTTP scenario","read":null,"created":"2021-05-14T11:17:04.433Z","type":1},{"id":"1","subject":"Encountered error in Integration HTTP scenario","read":null,"created":"2021-05-14T11:14:08.675Z","type":1}],"userUnreadNotifications":4,"userZoneNotifications":[{"imtZoneId":1,"unreadNotifications":4}],"pg":{"sortBy":"id","limit":10000,"sortDir":"desc","offset":0}}}}}}},"delete":{"tags":["Notifications"],"summary":"Delete notifications","description":"Deletes notifications with given IDs and returns their IDs in the response. This endpoint allows deleting one or more notifications at once.","security":[{"token":["notifications:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","description":"The array with IDs of the notifications to delete. Since the number of notifications can reach a `BigInt` and because of the limitations of the Open API format, the IDs need to be strings.","items":{"type":"string"}}},"required":["ids"]},"example":{"ids":["1","2","3"]}}}},"parameters":[{"name":"imtZoneId","in":"query","schema":{"type":"integer"},"description":"The unique ID of the Make zone. This parameter is required to retrieve notifications from the Make version. For other Make platforms, it can be ignored. The IDs of the zones can be obtained from the `/enums/imt-zones` endpoint.","example":2}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"notifications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"}}}}}},"example":{"notifications":[{"id":"1"},{"id":"2"}]}}}}}}},"/notifications/{notificationId}":{"get":{"tags":["Notifications"],"summary":"Get notification detail","description":"Retrieves details and full content of a notification with a given ID.","security":[{"token":["notifications:read"]}],"parameters":[{"name":"notificationId","in":"path","schema":{"type":"string"},"description":"The unique ID of the notification. It can be retrieved from the [List notifications](./get--notifications.md) endpoint. Since the number of notifications can reach a `BigInt` and because of the limitations of the Open API format, the IDs need to be strings.","required":true,"example":"3"},{"name":"imtZoneId","in":"query","schema":{"type":"integer"},"description":"The unique ID of the Make zone. This parameter is required to retrieve notifications from the Make version. For other Make platforms, it can be ignored. The IDs of the zones can be obtained from the `/enums/imt-zones` endpoint.","example":2}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"allOf":[{"type":"object","properties":{"id":{"type":"string"},"subject":{"type":"string"},"read":{"type":"string","format":"date-time"},"created":{"type":"string","format":"date-time"},"type":{"type":"integer"}}},{"type":"object","properties":{"body":{"type":"string"}}}]}}},"example":{"notification":{"id":"3","subject":"Encountered error in Integration HTTP 3 scenario","read":"2020-02-29T21:20:40.093Z","created":"2020-01-22T13:54:29.748Z","type":1,"body":"<p>Your scenario <strong>Integration HTTP 3</strong> has encountered an error.</p>\n<p>The scenario has not been paused and continues to run according to your settings. Nevertheless, you should pay attention to the issue.</p>\n<ul>\n<li>Scenario: <a href=\"https://local.make.cloud/scenario/86/log\">Integration HTTP 3</a></li>\n<li>Organization: <a href=\"https://local.make.cloud/organization/2\">test team</a></li>\n<li>Team: <a href=\"https://local.make.cloud/team/1\">My Lab</a></li>\n<li>Execution: <a href=\"https://local.make.cloud/scenario/86/log/d4f49055d5f44705b2aaf77a09547b77\">d4f49055d5f44705b2aaf77a09547b77</a></li>\n</ul>\n<p>Details:</p>\n<ul>\n<li><code>Validation failed for 1 parameter(s).</code></li>\n<li><code>Missing value of required parameter &#39;{{!expect.json.label}}&#39;.</code></li>\n</ul>\n<p>If you have questions or need help, please contact us.</p>\n"}}}}}}}},"/notifications/mark-as-read":{"post":{"tags":["Notifications"],"summary":"Mark all notifications as read","description":"Marks all notifications as read and returns the IDs of the updated notifications in the response.","security":[{"token":["notifications:write"]}],"parameters":[{"name":"ids","in":"query","schema":{"type":"string"},"description":"Forces the request to mark all notifications as read. This parameter can only have the `all` value."},{"name":"imtZoneId","in":"query","schema":{"type":"integer"},"description":"The unique ID of the Make zone. This parameter is required to retrieve notifications from the Make version. For other Make platforms, it can be ignored. The IDs of the zones can be obtained from the `/enums/imt-zones` endpoint.","example":2}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"notifications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"}}}}}},"example":{"notifications":[{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"},{"id":"5"}]}}}}}}},"/oauth/auth/{connectionId}":{"post":{"tags":["Oauth"],"summary":"Authorize (deprecated)","x-internal":true,"deprecated":true,"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true},{"name":"scope","in":"query","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"}}},"examples":{"authorize":{"summary":"Authorize","value":{"url":"https://www.some-sass-url.com/"}}}}}}}},"get":{"tags":["Oauth"],"summary":"Authorize","x-internal":true,"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true},{"name":"scope","in":"query","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"302":{"description":"Redirect to connection's authorization page"}}}},"/oauth/reauth/{connectionId}":{"post":{"tags":["Oauth"],"summary":"Reauthorize (deprecated)","x-internal":true,"deprecated":true,"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true},{"name":"scope","in":"query","schema":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]},"example":"scope=value&scope=another_value"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"}}},"examples":{"reauthorize":{"summary":"Reauthorize","value":{"url":"https://www.some-sass-url.com/"}}}}}}}},"get":{"tags":["Oauth"],"summary":"Reauthorize","x-internal":true,"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true},{"name":"scope","in":"query","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"302":{"description":"Redirect to connection authorization page"}}}},"/oauth/extend/{connectionId}":{"post":{"tags":["Oauth"],"summary":"Extend (deprecated)","x-internal":true,"deprecated":true,"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"}}},"examples":{"extend":{"summary":"Extend","value":{"url":"https://www.some-sass-url.com/"}}}}}}}},"get":{"tags":["Oauth"],"summary":"Extend","x-internal":true,"parameters":[{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"}}},"examples":{"extend":{"summary":"Extend","value":{"url":"https://www.some-sass-url.com/"}}}}}}}}},"/oauth/cb/{connectionType}":{"post":{"tags":["Oauth"],"summary":"Oauth Callback (deprecated)","x-internal":true,"deprecated":true,"parameters":[{"name":"connectionType","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"examples":{"oauth-callback":{"summary":"Oauth Callback","value":{"ok":1}}}}}}}},"get":{"tags":["Oauth"],"summary":"Oauth Callback","x-internal":true,"parameters":[{"name":"connectionType","in":"path","schema":{"type":"string"},"required":true}],"responses":{"302":{"description":"Redirect to connection authorization page"}}}},"/oauth/cb/{connectionType}/{connectionId}":{"post":{"tags":["Oauth"],"summary":"Oauth Callback Id (deprecated)","x-internal":true,"deprecated":true,"parameters":[{"name":"connectionType","in":"path","schema":{"type":"string"},"required":true},{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"examples":{"oauth-callback-id":{"summary":"Oauth Callback Id","value":{"ok":1}}}}}}}},"get":{"tags":["Oauth"],"summary":"Oauth Callback Id","x-internal":true,"parameters":[{"name":"connectionType","in":"path","schema":{"type":"string"},"required":true},{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"302":{"description":"Redirect to connection authorization page"}}}},"/oauth/convert/saml-xml-to-json":{"post":{"x-internal":true,"tags":["Oauth"],"summary":"Parses saml xml to json with info about user","requestBody":{"content":{"application/json":{"samlXml":{"type":"string"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"json":{"type":"object","properties":{"attributes":{"type":"object"}}}}}}}}},"/organizations/{organizationId}/otel/destinations":{"get":{"tags":["Telemetry Destinations"],"summary":"List telemetry destinations","description":"Returns id, name, URL, and status for active and inactive destinations. Soft-deleted destinations are excluded. Use the detail endpoint to load signals and saved authentication header names before editing. Requires the open-telemetry feature flag for the requested organization and an organization Owner or Admin. Requests are forwarded to the Outbound Webhooks service over ISC; downstream status codes and error bodies are preserved.","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The organization whose telemetry destinations are managed. The caller must be its Owner or Admin.","schema":{"type":"integer","minimum":1,"maximum":2147483647},"examples":{"collector":{"value":12345}}}],"responses":{"200":{"description":"List telemetry destinations.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["id","name","url","status"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["active","inactive"]}}}},"examples":{"collector":{"value":[{"id":"539a60e2-36b1-42c0-8bb0-761bf8b56caa","name":"Grafana Cloud","url":"https://collector.example.com/v1/traces","status":"active"}]}}}}},"400":{"description":"Invalid input or telemetry export is disabled for this organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM903","message":"Feature flag is disabled","detail":"Telemetry export is not enabled for this organization."}}}}}},"401":{"description":"Authentication is missing or invalid, or the API token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SC401","message":"Unauthorized"}}}}}},"403":{"description":"The caller is not an organization Owner or Admin, lacks the required scope or permission, or uses a token bound to another organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM002","message":"Insufficient rights"}}}}}},"404":{"description":"The destination does not exist in this organization or has been soft-deleted.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"NOT_FOUND","message":"Telemetry destination not found."}}}}}},"422":{"description":"Organization permissions could not be verified because Roleman is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM016","message":"Action is not possible due to dependencies."}}}}}},"500":{"description":"The downstream service returned an error. Its status and body are forwarded unchanged.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"INTERNAL_ERROR","message":"The telemetry destination operation failed."}}}}}},"503":{"description":"The downstream service is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable."}}}}}}}},"post":{"tags":["Telemetry Destinations"],"summary":"Create a telemetry destination","description":"Creates an active destination. Authentication header values are encrypted and the response contains their names only. Requires the open-telemetry feature flag for the requested organization and an organization Owner or Admin. Requests are forwarded to the Outbound Webhooks service over ISC; downstream status codes and error bodies are preserved.","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The organization whose telemetry destinations are managed. The caller must be its Owner or Admin.","schema":{"type":"integer","minimum":1,"maximum":2147483647},"examples":{"collector":{"value":12345}}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"\\S","description":"A destination name containing at least one non-whitespace character. Leading and trailing whitespace is removed."},"url":{"type":"string","format":"uri","description":"An HTTPS collector endpoint. Localhost, private addresses, credentials in the URL, and redirects are not allowed. The hostname is resolved and checked when written."},"signals":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["traces"]}},"authHeaders":{"type":"array","minItems":1,"maxItems":8,"writeOnly":true,"description":"Authentication headers for the collector. On update, omitting this field preserves the saved set; supplying it replaces the whole set. An empty array is rejected. Names must be valid HTTP tokens and unique ignoring case. Reserved names such as Host and Content-Type are rejected.","items":{"type":"object","additionalProperties":false,"required":["name","value"],"properties":{"name":{"type":"string","minLength":1},"value":{"type":"string","maxLength":4096,"description":"At most 4096 UTF-8 bytes. Carriage returns and line feeds are rejected. Values are encrypted and never returned."}}}}}},{"type":"object","required":["name","url","signals","authHeaders"]}]},"examples":{"collector":{"value":{"name":"Grafana Cloud","url":"https://collector.example.com/v1/traces","signals":["traces"],"authHeaders":[{"name":"Authorization","value":"Bearer replace-with-your-token"}]}}}}}},"responses":{"201":{"description":"Create a telemetry destination.","content":{"application/json":{"schema":{"allOf":[{"allOf":[{"type":"object","required":["id","name","url","status"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["active","inactive"]}}},{"type":"object","required":["signals","headerNames"],"properties":{"signals":{"type":"array","items":{"type":"string","enum":["traces"]}},"headerNames":{"type":"array","items":{"type":"string"},"description":"Saved authentication header names. Values are never returned."}}}]},{"type":"object","required":["organizationId","createdAt","updatedAt"],"properties":{"organizationId":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}]},"examples":{"collector":{"value":{"id":"539a60e2-36b1-42c0-8bb0-761bf8b56caa","name":"Grafana Cloud","url":"https://collector.example.com/v1/traces","status":"active","signals":["traces"],"headerNames":["Authorization"],"organizationId":12345,"createdAt":"2026-10-22T00:00:00.000Z","updatedAt":"2026-10-22T00:00:00.000Z"}}}}}},"400":{"description":"Invalid input or telemetry export is disabled for this organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM903","message":"Feature flag is disabled","detail":"Telemetry export is not enabled for this organization."}}}}}},"401":{"description":"Authentication is missing or invalid, or the API token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SC401","message":"Unauthorized"}}}}}},"403":{"description":"The caller is not an organization Owner or Admin, lacks the required scope or permission, or uses a token bound to another organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM002","message":"Insufficient rights"}}}}}},"404":{"description":"The destination does not exist in this organization or has been soft-deleted.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"NOT_FOUND","message":"Telemetry destination not found."}}}}}},"422":{"description":"Organization permissions could not be verified because Roleman is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM016","message":"Action is not possible due to dependencies."}}}}}},"500":{"description":"The downstream service returned an error. Its status and body are forwarded unchanged.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"INTERNAL_ERROR","message":"The telemetry destination operation failed."}}}}}},"503":{"description":"The downstream service is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable."}}}}}}}}},"/organizations/{organizationId}/otel/destinations/{destinationId}":{"get":{"tags":["Telemetry Destinations"],"summary":"Get a telemetry destination","description":"Returns the current configuration and saved authentication header names. Missing, soft-deleted, and other-organization destinations return 404. Requires the open-telemetry feature flag for the requested organization and an organization Owner or Admin. Requests are forwarded to the Outbound Webhooks service over ISC; downstream status codes and error bodies are preserved.","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The organization whose telemetry destinations are managed. The caller must be its Owner or Admin.","schema":{"type":"integer","minimum":1,"maximum":2147483647},"examples":{"collector":{"value":12345}}},{"name":"destinationId","in":"path","required":true,"description":"The destination UUID returned by the list or create endpoint.","schema":{"type":"string","format":"uuid"},"examples":{"collector":{"value":"539a60e2-36b1-42c0-8bb0-761bf8b56caa"}}}],"responses":{"200":{"description":"Get a telemetry destination.","content":{"application/json":{"schema":{"allOf":[{"type":"object","required":["id","name","url","status"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["active","inactive"]}}},{"type":"object","required":["signals","headerNames"],"properties":{"signals":{"type":"array","items":{"type":"string","enum":["traces"]}},"headerNames":{"type":"array","items":{"type":"string"},"description":"Saved authentication header names. Values are never returned."}}}]},"examples":{"collector":{"value":{"id":"539a60e2-36b1-42c0-8bb0-761bf8b56caa","name":"Grafana Cloud","url":"https://collector.example.com/v1/traces","status":"active","signals":["traces"],"headerNames":["Authorization"]}}}}}},"400":{"description":"Invalid input or telemetry export is disabled for this organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM903","message":"Feature flag is disabled","detail":"Telemetry export is not enabled for this organization."}}}}}},"401":{"description":"Authentication is missing or invalid, or the API token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SC401","message":"Unauthorized"}}}}}},"403":{"description":"The caller is not an organization Owner or Admin, lacks the required scope or permission, or uses a token bound to another organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM002","message":"Insufficient rights"}}}}}},"404":{"description":"The destination does not exist in this organization or has been soft-deleted.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"NOT_FOUND","message":"Telemetry destination not found."}}}}}},"422":{"description":"Organization permissions could not be verified because Roleman is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM016","message":"Action is not possible due to dependencies."}}}}}},"500":{"description":"The downstream service returned an error. Its status and body are forwarded unchanged.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"INTERNAL_ERROR","message":"The telemetry destination operation failed."}}}}}},"503":{"description":"The downstream service is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable."}}}}}}}},"patch":{"tags":["Telemetry Destinations"],"summary":"Update a telemetry destination","description":"Updates only the supplied fields. Omit authHeaders to keep the saved set, or provide a nonempty set to replace it completely. Status is changed through the activate/deactivate endpoints. Requires the open-telemetry feature flag for the requested organization and an organization Owner or Admin. Requests are forwarded to the Outbound Webhooks service over ISC; downstream status codes and error bodies are preserved.","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The organization whose telemetry destinations are managed. The caller must be its Owner or Admin.","schema":{"type":"integer","minimum":1,"maximum":2147483647},"examples":{"collector":{"value":12345}}},{"name":"destinationId","in":"path","required":true,"description":"The destination UUID returned by the list or create endpoint.","schema":{"type":"string","format":"uuid"},"examples":{"collector":{"value":"539a60e2-36b1-42c0-8bb0-761bf8b56caa"}}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"\\S","description":"A destination name containing at least one non-whitespace character. Leading and trailing whitespace is removed."},"url":{"type":"string","format":"uri","description":"An HTTPS collector endpoint. Localhost, private addresses, credentials in the URL, and redirects are not allowed. The hostname is resolved and checked when written."},"signals":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["traces"]}},"authHeaders":{"type":"array","minItems":1,"maxItems":8,"writeOnly":true,"description":"Authentication headers for the collector. On update, omitting this field preserves the saved set; supplying it replaces the whole set. An empty array is rejected. Names must be valid HTTP tokens and unique ignoring case. Reserved names such as Host and Content-Type are rejected.","items":{"type":"object","additionalProperties":false,"required":["name","value"],"properties":{"name":{"type":"string","minLength":1},"value":{"type":"string","maxLength":4096,"description":"At most 4096 UTF-8 bytes. Carriage returns and line feeds are rejected. Values are encrypted and never returned."}}}}}},{"type":"object","minProperties":1}]},"examples":{"collector":{"value":{"name":"Updated collector"}}}}}},"responses":{"200":{"description":"Update a telemetry destination.","content":{"application/json":{"schema":{"allOf":[{"allOf":[{"type":"object","required":["id","name","url","status"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["active","inactive"]}}},{"type":"object","required":["signals","headerNames"],"properties":{"signals":{"type":"array","items":{"type":"string","enum":["traces"]}},"headerNames":{"type":"array","items":{"type":"string"},"description":"Saved authentication header names. Values are never returned."}}}]},{"type":"object","required":["organizationId","createdAt","updatedAt"],"properties":{"organizationId":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}]},"examples":{"collector":{"value":{"id":"539a60e2-36b1-42c0-8bb0-761bf8b56caa","name":"Updated collector","url":"https://collector.example.com/v1/traces","status":"active","signals":["traces"],"headerNames":["Authorization"],"organizationId":12345,"createdAt":"2026-10-22T00:00:00.000Z","updatedAt":"2026-10-22T00:00:00.000Z"}}}}}},"400":{"description":"Invalid input or telemetry export is disabled for this organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM903","message":"Feature flag is disabled","detail":"Telemetry export is not enabled for this organization."}}}}}},"401":{"description":"Authentication is missing or invalid, or the API token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SC401","message":"Unauthorized"}}}}}},"403":{"description":"The caller is not an organization Owner or Admin, lacks the required scope or permission, or uses a token bound to another organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM002","message":"Insufficient rights"}}}}}},"404":{"description":"The destination does not exist in this organization or has been soft-deleted.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"NOT_FOUND","message":"Telemetry destination not found."}}}}}},"422":{"description":"Organization permissions could not be verified because Roleman is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM016","message":"Action is not possible due to dependencies."}}}}}},"500":{"description":"The downstream service returned an error. Its status and body are forwarded unchanged.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"INTERNAL_ERROR","message":"The telemetry destination operation failed."}}}}}},"503":{"description":"The downstream service is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable."}}}}}}}},"delete":{"tags":["Telemetry Destinations"],"summary":"Delete a telemetry destination","description":"Soft-deletes the destination and removes its stored authentication headers. The deleted destination is excluded from list and detail reads. Requires the open-telemetry feature flag for the requested organization and an organization Owner or Admin. Requests are forwarded to the Outbound Webhooks service over ISC; downstream status codes and error bodies are preserved.","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The organization whose telemetry destinations are managed. The caller must be its Owner or Admin.","schema":{"type":"integer","minimum":1,"maximum":2147483647},"examples":{"collector":{"value":12345}}},{"name":"destinationId","in":"path","required":true,"description":"The destination UUID returned by the list or create endpoint.","schema":{"type":"string","format":"uuid"},"examples":{"collector":{"value":"539a60e2-36b1-42c0-8bb0-761bf8b56caa"}}}],"responses":{"200":{"description":"Delete a telemetry destination.","content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["deleted"]}}},"examples":{"collector":{"value":{"status":"deleted"}}}}}},"400":{"description":"Invalid input or telemetry export is disabled for this organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM903","message":"Feature flag is disabled","detail":"Telemetry export is not enabled for this organization."}}}}}},"401":{"description":"Authentication is missing or invalid, or the API token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SC401","message":"Unauthorized"}}}}}},"403":{"description":"The caller is not an organization Owner or Admin, lacks the required scope or permission, or uses a token bound to another organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM002","message":"Insufficient rights"}}}}}},"404":{"description":"The destination does not exist in this organization or has been soft-deleted.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"NOT_FOUND","message":"Telemetry destination not found."}}}}}},"422":{"description":"Organization permissions could not be verified because Roleman is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM016","message":"Action is not possible due to dependencies."}}}}}},"500":{"description":"The downstream service returned an error. Its status and body are forwarded unchanged.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"INTERNAL_ERROR","message":"The telemetry destination operation failed."}}}}}},"503":{"description":"The downstream service is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable."}}}}}}}}},"/organizations/{organizationId}/otel/destinations/{destinationId}/activate":{"patch":{"tags":["Telemetry Destinations"],"summary":"Activate a telemetry destination","description":"Sets the destination status to active. Repeating the operation is allowed and does not change its configuration. Requires the open-telemetry feature flag for the requested organization and an organization Owner or Admin. Requests are forwarded to the Outbound Webhooks service over ISC; downstream status codes and error bodies are preserved.","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The organization whose telemetry destinations are managed. The caller must be its Owner or Admin.","schema":{"type":"integer","minimum":1,"maximum":2147483647},"examples":{"collector":{"value":12345}}},{"name":"destinationId","in":"path","required":true,"description":"The destination UUID returned by the list or create endpoint.","schema":{"type":"string","format":"uuid"},"examples":{"collector":{"value":"539a60e2-36b1-42c0-8bb0-761bf8b56caa"}}}],"responses":{"200":{"description":"Activate a telemetry destination.","content":{"application/json":{"schema":{"allOf":[{"allOf":[{"type":"object","required":["id","name","url","status"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["active","inactive"]}}},{"type":"object","required":["signals","headerNames"],"properties":{"signals":{"type":"array","items":{"type":"string","enum":["traces"]}},"headerNames":{"type":"array","items":{"type":"string"},"description":"Saved authentication header names. Values are never returned."}}}]},{"type":"object","required":["organizationId","createdAt","updatedAt"],"properties":{"organizationId":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}]},"examples":{"collector":{"value":{"id":"539a60e2-36b1-42c0-8bb0-761bf8b56caa","name":"Grafana Cloud","url":"https://collector.example.com/v1/traces","status":"active","signals":["traces"],"headerNames":["Authorization"],"organizationId":12345,"createdAt":"2026-10-22T00:00:00.000Z","updatedAt":"2026-10-22T00:00:00.000Z"}}}}}},"400":{"description":"Invalid input or telemetry export is disabled for this organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM903","message":"Feature flag is disabled","detail":"Telemetry export is not enabled for this organization."}}}}}},"401":{"description":"Authentication is missing or invalid, or the API token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SC401","message":"Unauthorized"}}}}}},"403":{"description":"The caller is not an organization Owner or Admin, lacks the required scope or permission, or uses a token bound to another organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM002","message":"Insufficient rights"}}}}}},"404":{"description":"The destination does not exist in this organization or has been soft-deleted.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"NOT_FOUND","message":"Telemetry destination not found."}}}}}},"422":{"description":"Organization permissions could not be verified because Roleman is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM016","message":"Action is not possible due to dependencies."}}}}}},"500":{"description":"The downstream service returned an error. Its status and body are forwarded unchanged.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"INTERNAL_ERROR","message":"The telemetry destination operation failed."}}}}}},"503":{"description":"The downstream service is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable."}}}}}}}}},"/organizations/{organizationId}/otel/destinations/{destinationId}/deactivate":{"patch":{"tags":["Telemetry Destinations"],"summary":"Deactivate a telemetry destination","description":"Sets the destination status to inactive without deleting its configuration. Repeating the operation is allowed. Requires the open-telemetry feature flag for the requested organization and an organization Owner or Admin. Requests are forwarded to the Outbound Webhooks service over ISC; downstream status codes and error bodies are preserved.","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The organization whose telemetry destinations are managed. The caller must be its Owner or Admin.","schema":{"type":"integer","minimum":1,"maximum":2147483647},"examples":{"collector":{"value":12345}}},{"name":"destinationId","in":"path","required":true,"description":"The destination UUID returned by the list or create endpoint.","schema":{"type":"string","format":"uuid"},"examples":{"collector":{"value":"539a60e2-36b1-42c0-8bb0-761bf8b56caa"}}}],"responses":{"200":{"description":"Deactivate a telemetry destination.","content":{"application/json":{"schema":{"allOf":[{"allOf":[{"type":"object","required":["id","name","url","status"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["active","inactive"]}}},{"type":"object","required":["signals","headerNames"],"properties":{"signals":{"type":"array","items":{"type":"string","enum":["traces"]}},"headerNames":{"type":"array","items":{"type":"string"},"description":"Saved authentication header names. Values are never returned."}}}]},{"type":"object","required":["organizationId","createdAt","updatedAt"],"properties":{"organizationId":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}]},"examples":{"collector":{"value":{"id":"539a60e2-36b1-42c0-8bb0-761bf8b56caa","name":"Grafana Cloud","url":"https://collector.example.com/v1/traces","status":"inactive","signals":["traces"],"headerNames":["Authorization"],"organizationId":12345,"createdAt":"2026-10-22T00:00:00.000Z","updatedAt":"2026-10-22T00:00:00.000Z"}}}}}},"400":{"description":"Invalid input or telemetry export is disabled for this organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM903","message":"Feature flag is disabled","detail":"Telemetry export is not enabled for this organization."}}}}}},"401":{"description":"Authentication is missing or invalid, or the API token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SC401","message":"Unauthorized"}}}}}},"403":{"description":"The caller is not an organization Owner or Admin, lacks the required scope or permission, or uses a token bound to another organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM002","message":"Insufficient rights"}}}}}},"404":{"description":"The destination does not exist in this organization or has been soft-deleted.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"NOT_FOUND","message":"Telemetry destination not found."}}}}}},"422":{"description":"Organization permissions could not be verified because Roleman is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM016","message":"Action is not possible due to dependencies."}}}}}},"500":{"description":"The downstream service returned an error. Its status and body are forwarded unchanged.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"INTERNAL_ERROR","message":"The telemetry destination operation failed."}}}}}},"503":{"description":"The downstream service is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable."}}}}}}}}},"/organizations/{organizationId}/otel/signals":{"get":{"tags":["Telemetry Destinations"],"summary":"List available telemetry signals","description":"Lists telemetry signal types available for export. Only traces is currently available. Requires the open-telemetry feature flag for the requested organization and an organization Owner or Admin. Requests are forwarded to the Outbound Webhooks service over ISC; downstream status codes and error bodies are preserved.","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The organization whose telemetry destinations are managed. The caller must be its Owner or Admin.","schema":{"type":"integer","minimum":1,"maximum":2147483647},"examples":{"collector":{"value":12345}}}],"responses":{"200":{"description":"List available telemetry signals.","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","enum":["traces"]}},"examples":{"collector":{"value":["traces"]}}}}},"400":{"description":"Invalid input or telemetry export is disabled for this organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM903","message":"Feature flag is disabled","detail":"Telemetry export is not enabled for this organization."}}}}}},"401":{"description":"Authentication is missing or invalid, or the API token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SC401","message":"Unauthorized"}}}}}},"403":{"description":"The caller is not an organization Owner or Admin, lacks the required scope or permission, or uses a token bound to another organization.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM002","message":"Insufficient rights"}}}}}},"404":{"description":"The destination does not exist in this organization or has been soft-deleted.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"NOT_FOUND","message":"Telemetry destination not found."}}}}}},"422":{"description":"Organization permissions could not be verified because Roleman is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"IM016","message":"Action is not possible due to dependencies."}}}}}},"500":{"description":"The downstream service returned an error. Its status and body are forwarded unchanged.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"INTERNAL_ERROR","message":"The telemetry destination operation failed."}}}}}},"503":{"description":"The downstream service is unavailable.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}]},"fields":{"type":"array","items":{"type":"object","required":["path","code"],"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}},"examples":{"collector":{"value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable."}}}}}}}}},"/organizations":{"get":{"tags":["Organizations"],"summary":"List user organizations","description":"Retrieves a collection of all organizations, in which the user has membership. The response contains information about the organization `name`, `organizationId` and `timezoneId`. You can get more data about the user organizations with specifying the `cols[]` query parameter.\n\nHowever, the values for parameters `license`, `serviceName` and `isPaused` are returned only for organizations in your current Make zone.\n\nThe `privateSpaces` column lists the private spaces the caller is a member of in each organization (own private spaces only; app zones only). It needs no organization permission, unlike `GET /private-spaces`.\nReturned organizations are sorted by the organization name in ascending order by default. You can specify sorting order with the query parameter `pg[sortBy].`","security":[{"token":["organizations:read"]}],"parameters":[{"name":"zone","in":"query","description":"The URL of your Make instance domain.","schema":{"type":"string"},"example":"eu1.make.com"},{"name":"externalId","in":"query","description":"Make White Label product instances use the `externalId` parameter for security reasons. This parameter has `null` value in the public Make Cloud instance.","schema":{"type":"string"},"examples":{"all-cols":{"value":"TESTORG003"}}},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"all-cols":{"value":["id","name","countryId","timezoneId","license","zone","serviceName","teams","isPaused","externalId","productName","tfaEnforced","privateSpaces"]}}},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organizations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"serviceName":{"type":"string"},"nextReset":{"type":"string","format":"date-time"},"lastReset":{"type":"string","format":"date-time"},"isPaused":{"type":"boolean"},"countryId":{"type":"integer"},"timezoneId":{"type":"integer"},"deleted":{"type":"boolean"},"license":{"type":"object","additionalProperties":{}},"zone":{"type":"string"},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"productName":{"type":"string"},"ssoType":{"type":"string","nullable":true,"description":"The SSO authentication type configured for the organization. Possible values: 'oauth2', 'saml2', 'none', or null if not configured."},"scenarios":{"type":"integer"},"activeScenarios":{"type":"integer"},"tfaEnforced":{"type":"boolean","description":"Whether TFA is enforced for the organization."},"userSessionTimeout":{"type":"integer","description":"How long, in seconds, a user of the organization may stay inactive before being logged out.","example":86400},"featureControls":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"enabled":{"type":"boolean"}}}},"privateSpaces":{"type":"array","description":"The private spaces the requesting user is a member of within this organization.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"isOwner":{"type":"boolean","description":"Whether the requesting user owns this private space."},"hasAdminVisibility":{"type":"boolean","description":"Whether organization admins have visibility into this private space, i.e. whether the organization's \"add admins as observers\" private-spaces setting is currently enabled."}}}}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"examples":{"default-cols":{"summary":"Return default columns","description":"Return default set of information about all organizations in which the user has membership.","value":{"organizations":[{"id":5,"name":"New organization","timezoneId":113},{"id":6,"name":"New organization","timezoneId":113}],"pg":{"sortBy":"name","sortDir":"asc","limit":10000,"offset":0}}},"all-cols":{"summary":"Return all values","description":"Returns all available information about all organizations in which the user has membership.","value":{"organizations":[{"name":"New organization","id":5,"countryId":1,"timezoneId":113,"license":{"apps":"T2","users":50,"dslimit":40,"fslimit":2147483648,"iolimit":10000,"dsslimit":524288000,"fulltext":true,"interval":1,"transfer":1099511627776,"operations":800000000},"zone":"local.make.cloud","serviceName":"unlimited","teams":[{"id":5,"name":"My Team"}],"isPaused":false,"tfaEnforced":false,"privateSpaces":[{"id":12,"name":"John Doe","isOwner":true,"hasAdminVisibility":false}]},{"name":"New organization","id":6,"countryId":1,"timezoneId":113,"license":{"apps":"T2","users":50,"dslimit":40,"fslimit":2147483648,"iolimit":10000,"dsslimit":524288000,"fulltext":true,"interval":1,"transfer":1099511627776,"operations":800000000},"zone":"local.make.cloud","serviceName":"unlimited","teams":[{"id":6,"name":"My Team"}],"isPaused":false,"tfaEnforced":false,"privateSpaces":[{"id":13,"name":"Jane Doe","isOwner":true,"hasAdminVisibility":true}]}],"pg":{"sortBy":"name","sortDir":"asc","limit":10000,"offset":0}}}}}}},"401":{"description":"The API token or OAuth credential lacks the `organizations:read` scope (`IM001`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Make API error code, for example `IM001`."},"message":{"type":"string","description":"Human-readable error message."},"detail":{"type":"string","description":"Additional information about the error, for example the scope the request is missing."},"suberrors":{"type":"array","items":{"type":"object"}}}},"examples":{"missing-scope":{"summary":"Missing organizations:read scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: organizations:read","suberrors":[]}}}}}}}},"post":{"tags":["Organizations"],"summary":"Create an organization","description":"Create a new organization using the data sent in the request body. Successful response contains all information about the created organization.","security":[{"token":["admin:write","organizations:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the organization. The name may contain only letters, numbers, spaces, and the following special characters: `'`, `-`, `.`, `(`, `)`, `*`, `+`, `,`, `@`, `_`, `/`. The name must not start or end with a space."},"regionId":{"type":"integer","description":"ID of the Make region instance associated with the organization. Get the list of Make regions with the API call `GET /enums/imt-regions`."},"timezoneId":{"type":"integer","description":"The ID of the timezone associated with the organization. Get the list of the timezone IDs with the API call `GET /enums/timezones`."},"countryId":{"type":"integer","description":"The ID of the country associated with the organization. Get the list of the country IDs with the API call `GET /enums/countries`."}},"required":["name","regionId","timezoneId","countryId"]},"example":{"name":"New organization I","regionId":1,"timezoneId":113,"countryId":1}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"serviceName":{"type":"string"},"nextReset":{"type":"string","format":"date-time"},"lastReset":{"type":"string","format":"date-time"},"isPaused":{"type":"boolean"},"countryId":{"type":"integer"},"timezoneId":{"type":"integer"},"deleted":{"type":"boolean"},"license":{"type":"object","additionalProperties":{}},"zone":{"type":"string"},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"productName":{"type":"string"},"ssoType":{"type":"string","nullable":true,"description":"The SSO authentication type configured for the organization. Possible values: 'oauth2', 'saml2', 'none', or null if not configured."},"scenarios":{"type":"integer"},"activeScenarios":{"type":"integer"},"tfaEnforced":{"type":"boolean","description":"Whether TFA is enforced for the organization."},"userSessionTimeout":{"type":"integer","description":"How long, in seconds, a user of the organization may stay inactive before being logged out.","example":86400},"featureControls":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"enabled":{"type":"boolean"}}}},"privateSpaces":{"type":"array","description":"The private spaces the requesting user is a member of within this organization.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"isOwner":{"type":"boolean","description":"Whether the requesting user owns this private space."},"hasAdminVisibility":{"type":"boolean","description":"Whether organization admins have visibility into this private space, i.e. whether the organization's \"add admins as observers\" private-spaces setting is currently enabled."}}}}}}}},"example":{"organization":{"id":9,"name":"New organization","timezoneId":113,"countryId":1,"license":{"apps":[],"users":50,"dslimit":40,"fslimit":2147483648,"iolimit":10000,"advsched":true,"dsslimit":524288000,"fulltext":true,"interval":1,"transfer":1099511627776,"operations":800000000},"zone":"slave1.make.cloud","serviceName":"default","teams":[{"id":6,"name":"My Team"}],"isPaused":false,"tfaEnforced":false},"userOrganizationRole":{"userId":3,"organizationId":9,"usersRoleId":11,"invitation":null}}}}}}}},"/organizations/invitation":{"get":{"tags":["Organizations"],"summary":"Invitation detail","security":[{"token":["organizations:read"]}],"parameters":[{"name":"hash","in":"query","schema":{"type":"string"},"required":true,"example":"bf1effe1-bc9d-4ab3-9414-9c3b66175305"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"user":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"language":{"type":"string"},"timezoneId":{"type":"integer"},"localeId":{"type":"integer"},"countryId":{"type":"integer"},"features":{"type":"object","properties":{"allow_apps":{"type":"boolean"}}},"avatar":{"type":"string","format":"uri"},"lastLogin":{"type":"string","format":"date-time"},"tfaStatus":{"type":"integer","nullable":true,"enum":[0,1,2],"description":"Two-factor authentication status:\n- 0: No TFA set\n- 1: TFA active (authenticator app)\n- 2: External authentication (Social SSO)\n\nIt is only supported on Make's public cloud instances.\n"},"supportEligible":{"type":"boolean","description":"Whether the user is eligible for contact support. False if all user's organizations are on Free plan and account is older than 90 days."},"userTeamIds":{"type":"array","nullable":true,"description":"IDs of teams the user belongs to within the organization. Only returned when explicitly requested via cols[]=userTeamIds and organizationId is provided.","items":{"type":"integer"}},"privateSpace":{"nullable":true,"description":"The user's personal private space in the organization. Only returned when explicitly requested via cols[]=privateSpace with organizationId on a public instance.","type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"globalAgentsEnabled":{"type":"boolean"},"type":{"type":"string","enum":["personal"]},"operationsLimit":{"type":"integer","nullable":true},"transferLimit":{"type":"bigint","nullable":true},"consumedOperations":{"type":"integer","nullable":true},"consumedTransfer":{"type":"bigint","nullable":true},"isPaused":{"type":"boolean","nullable":true},"consumedCenticredits":{"type":"integer","nullable":true}}}}},"userOrganizationRole":{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"string"}}}}},"examples":{"invitation-detail":{"summary":"Invitation detail","value":{"organization":{"id":13,"name":"New organization"},"user":{"id":1,"name":"Martin","email":"admin@make.cloud","language":"en","timezoneId":113,"localeId":18,"countryId":1,"features":{},"avatar":"https://secure.gravatar.com/avatar/6b1a74d20d925c12a73af32bf0dd7164.jpg?d=mm"},"userOrganizationRole":{"userId":1,"organizationId":13,"usersRoleId":12,"invitation":"pending"}}}}}}}}}},"/organizations/accept-invitation":{"post":{"tags":["Organizations"],"summary":"Accept invitation","security":[{"token":["organizations:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string"}},"required":["hash"]},"example":{"hash":"bf1effe1-bc9d-4ab3-9414-9c3b66175305"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"language":{"type":"string"},"timezoneId":{"type":"integer"},"localeId":{"type":"integer"},"countryId":{"type":"integer"},"features":{"type":"object","properties":{"allow_apps":{"type":"boolean"}}},"avatar":{"type":"string","format":"uri"},"lastLogin":{"type":"string","format":"date-time"},"tfaStatus":{"type":"integer","nullable":true,"enum":[0,1,2],"description":"Two-factor authentication status:\n- 0: No TFA set\n- 1: TFA active (authenticator app)\n- 2: External authentication (Social SSO)\n\nIt is only supported on Make's public cloud instances.\n"},"supportEligible":{"type":"boolean","description":"Whether the user is eligible for contact support. False if all user's organizations are on Free plan and account is older than 90 days."},"userTeamIds":{"type":"array","nullable":true,"description":"IDs of teams the user belongs to within the organization. Only returned when explicitly requested via cols[]=userTeamIds and organizationId is provided.","items":{"type":"integer"}},"privateSpace":{"nullable":true,"description":"The user's personal private space in the organization. Only returned when explicitly requested via cols[]=privateSpace with organizationId on a public instance.","type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"globalAgentsEnabled":{"type":"boolean"},"type":{"type":"string","enum":["personal"]},"operationsLimit":{"type":"integer","nullable":true},"transferLimit":{"type":"bigint","nullable":true},"consumedOperations":{"type":"integer","nullable":true},"consumedTransfer":{"type":"bigint","nullable":true},"isPaused":{"type":"boolean","nullable":true},"consumedCenticredits":{"type":"integer","nullable":true}}}}},"userOrganizationRole":{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"string"}}}}},"examples":{"accept-invitation":{"summary":"Accept invitation","value":{"user":{"id":1,"name":"Martin","email":"admin@make.cloud","language":"en","timezoneId":113,"localeId":18,"countryId":1,"features":{},"avatar":"https://secure.gravatar.com/avatar/6b1a74d20d925c12a73af32bf0dd7164.jpg?d=mm"},"userOrganizationRole":{"userId":1,"organizationId":13,"usersRoleId":12,"invitation":null}}}}}}}}}},"/organizations/{organizationId}":{"get":{"tags":["Organizations"],"summary":"Get organization details","description":"Retrieves detail information of the organization with the specified `organizationId`.","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11},{"name":"wait","in":"query","schema":{"type":"boolean"},"description":"Set this parameter to `true` if you are using the API call `GET /organizations/{organizationId}` shortly after creating the organization. The API call will first check synchronization of the Make backend and your Make zone data. If you don't use this argument, the API call might fail with an error due to unfinished data synchronization. The default value of this argument is `false`.","example":"true"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"serviceName":{"type":"string"},"nextReset":{"type":"string","format":"date-time"},"lastReset":{"type":"string","format":"date-time"},"isPaused":{"type":"boolean"},"countryId":{"type":"integer"},"timezoneId":{"type":"integer"},"deleted":{"type":"boolean"},"license":{"type":"object","additionalProperties":{}},"zone":{"type":"string"},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"productName":{"type":"string"},"ssoType":{"type":"string","nullable":true,"description":"The SSO authentication type configured for the organization. Possible values: 'oauth2', 'saml2', 'none', or null if not configured."},"scenarios":{"type":"integer"},"activeScenarios":{"type":"integer"},"tfaEnforced":{"type":"boolean","description":"Whether TFA is enforced for the organization."},"userSessionTimeout":{"type":"integer","description":"How long, in seconds, a user of the organization may stay inactive before being logged out.","example":86400},"featureControls":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"enabled":{"type":"boolean"}}}},"privateSpaces":{"type":"array","description":"The private spaces the requesting user is a member of within this organization.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"isOwner":{"type":"boolean","description":"Whether the requesting user owns this private space."},"hasAdminVisibility":{"type":"boolean","description":"Whether organization admins have visibility into this private space, i.e. whether the organization's \"add admins as observers\" private-spaces setting is currently enabled."}}}}}}}},"example":{"organization":{"id":10,"name":"Organization 10","serviceName":"unlimited","nextReset":null,"operations":"0","transfer":"0","centicreditsConsumed":"0","operationsExt":"0","transferExt":"0","centicreditsExtra":"0","unusedOperations":"0","unusedTransfer":"0","unusedCenticredits":"0","isPaused":false,"countryId":1,"timezoneId":113,"ssoType":null,"deleted":false,"license":{"apps":["T2","T3"],"users":50,"dslimit":40,"fslimit":2147483648,"iolimit":10000,"dsslimit":524288000,"fulltext":true,"interval":1,"transfer":1099511627776,"operations":800000000},"features":{},"zone":"local.make.cloud","teams":[{"id":16,"name":"My Team"}],"tfaEnforced":false,"featureControls":[{"name":"ai_agents","enabled":true}],"privateSpaces":[{"id":17,"name":"John Doe","isOwner":true,"hasAdminVisibility":false}]}}}}}}},"patch":{"tags":["Organizations"],"summary":"Update organization information","description":"Updates the organization data with the values in the request body. If you don't use a parameter in the request body, Make won't change its value. You can update organization name, timezone, and country with the `name`, `timezoneId`, and `countryId` parameters.\n\nCheck the available values for the `timezoneId` and `countryId` parameters with the API calls `GET /enums/timezones` and `GET /enums/countries`.\n\nThe request response returns all organization data.","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The new name of the organization. The name may contain only letters, numbers, spaces, and the following special characters: `'`, `-`, `.`, `(`, `)`, `*`, `+`, `,`, `@`, `_`, `/`. The name must not start or end with a space."},"countryId":{"type":"integer","description":"The ID of the country associated with the organization. Get the list of the country IDs with the API call `GET /enums/countries`."},"timezoneId":{"type":"integer","description":"The ID of the timezone associated with the organization. Get the `timezoneId` values with the API call `GET /enums/timezones`."}}},"example":{"name":"Organization 10","countryId":1,"timezoneId":113}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"serviceName":{"type":"string"},"nextReset":{"type":"string","format":"date-time"},"lastReset":{"type":"string","format":"date-time"},"isPaused":{"type":"boolean"},"countryId":{"type":"integer"},"timezoneId":{"type":"integer"},"deleted":{"type":"boolean"},"license":{"type":"object","additionalProperties":{}},"zone":{"type":"string"},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"productName":{"type":"string"},"ssoType":{"type":"string","nullable":true,"description":"The SSO authentication type configured for the organization. Possible values: 'oauth2', 'saml2', 'none', or null if not configured."},"scenarios":{"type":"integer"},"activeScenarios":{"type":"integer"},"tfaEnforced":{"type":"boolean","description":"Whether TFA is enforced for the organization."},"userSessionTimeout":{"type":"integer","description":"How long, in seconds, a user of the organization may stay inactive before being logged out.","example":86400},"featureControls":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"enabled":{"type":"boolean"}}}},"privateSpaces":{"type":"array","description":"The private spaces the requesting user is a member of within this organization.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"isOwner":{"type":"boolean","description":"Whether the requesting user owns this private space."},"hasAdminVisibility":{"type":"boolean","description":"Whether organization admins have visibility into this private space, i.e. whether the organization's \"add admins as observers\" private-spaces setting is currently enabled."}}}}}}}},"example":{"organization":{"name":"Organization 10","countryId":1,"timezoneId":113,"license":{"apps":"T2","users":50,"dslimit":40,"fslimit":2147483648,"iolimit":10000,"dsslimit":524288000,"fulltext":true,"interval":1,"transfer":1099511627776,"operations":800000000},"zone":"local.make.cloud","serviceName":"limit1","teams":[{"id":10,"name":"My Team"}],"isPaused":false,"tfaEnforced":false,"id":10}}}}}}},"delete":{"tags":["Organizations"],"summary":"Delete an organization","description":"Deletes the organization with the specified `organizationId`. Make also deletes all the teams in the organization. \n You can only delete organizations that are associated with your current Make zone. Your current Make zone is specified in the API call URL. Currently, it is either: \n - `eu1.make.com` \n - `us1.make.com`","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true,"description":"Set to `true` to confirm the organization deletion. Otherwise, if the organization has active scenarios, Make won't delete the organization and the API call returns an error."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"integer"}}},"example":{"organization":11}}}}}}},"/organizations/{organizationId}/apps":{"get":{"tags":["Organizations"],"summary":"Get a list of custom apps","description":"Get list of custom apps associated with the users in the organization. The request response contains information of both published and unpublished custom apps. The custom app name is suffixed with a random text string.","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"installedApps":{"type":"array","items":{"type":"object","properties":{"appName":{"type":"string"},"appVersion":{"type":"integer"},"organizationId":{"type":"integer"},"installedAt":{"type":"string","format":"date-time"},"installedBy":{"type":"integer"}}}}}},"example":{"installedApps":[{"appName":"custom-app-7xpqrg","appVersion":1,"organizationId":11,"installedAt":"2021-02-09T16:36:11.322Z","installedBy":1}]}}}}}}},"/organizations/{organizationId}/hooks":{"get":{"tags":["Hooks"],"summary":"List organization hooks","description":"Retrieves hooks from the teams of an organization, including private spaces. Only hooks from teams where the authenticated user has the `hooks get` permission are returned; teams without that permission are skipped. Organization admins with the `organization view` admin permission can list hooks from every team in the organization. Use `teamId` to restrict the result to one team: the request fails with `404` if the team does not belong to the organization, and with `403` if the user cannot view hooks in that team. Returned hooks are sorted by ID in ascending order by default. Use `pg[sortBy]` to sort by `name` or `hookName`.","security":[{"token":["hooks:read","organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The unique ID of the organization whose hooks will be retrieved.","schema":{"type":"integer","minimum":1},"example":5},{"name":"teamId","in":"query","description":"Restrict results to one team in the organization.","schema":{"type":"integer","minimum":1},"examples":{"filtered-by-team":{"summary":"Only hooks of one team","value":4}}},{"name":"name","in":"query","description":"Restrict results by a case-insensitive substring matched against the hook name.","schema":{"type":"string"},"example":"order"},{"name":"typeName","in":"query","description":"Restrict results to a hook type. Two native Make hook types are `gateway-webhook` and `gateway-mailhook`.","schema":{"type":"string"},"example":"gateway-webhook"},{"name":"assigned","in":"query","description":"Restrict results by whether the hook is assigned to a scenario. If set to `true`, only hooks assigned to a scenario are returned.","schema":{"type":"boolean"},"example":true},{"name":"enabled","in":"query","description":"Restrict results by enabled status.","schema":{"type":"boolean"},"example":true},{"name":"pg[limit]","in":"query","description":"The maximum number of hooks you want to get in the response.","schema":{"type":"integer","minimum":0,"maximum":10000,"default":50},"example":50},{"name":"pg[offset]","in":"query","description":"The number of hooks you want to skip before getting the hooks you want.","schema":{"type":"integer","minimum":0,"default":0},"example":0},{"name":"pg[sortBy]","in":"query","description":"The value that will be used to sort returned hooks by.","schema":{"type":"string","enum":["id","name","hookName"],"default":"id"},"example":"id"},{"name":"pg[sortDir]","in":"query","description":"The sorting direction.","schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"example":"asc"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hooks":{"type":"array","items":{"type":"object","required":["id","name","teamId","organizationId","type","enabled","gone","url"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"organizationId":{"type":"integer"},"type":{"type":"string"},"typeName":{"type":"string","nullable":true},"theme":{"type":"string","nullable":true,"format":"color"},"enabled":{"type":"boolean"},"gone":{"type":"boolean"},"url":{"type":"string"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"examples":{"all-hooks":{"summary":"Hooks from all teams the user can view","value":{"hooks":[{"id":11,"name":"My gateway-webhook webhook 1","teamId":4,"organizationId":5,"type":"web","typeName":"gateway-webhook","theme":"#c73a63","enabled":true,"gone":false,"url":"https://hook.make.com/1gqnexkk1vwxg2wpj39kg30pzp6uhe7h"},{"id":58,"name":"Test 1","teamId":9,"organizationId":5,"type":"web","typeName":"gateway-webhook","theme":"#c73a63","enabled":false,"gone":false,"url":"https://hook.make.com/d4ezzfwgyav7qaukv8dbh3l21eru0fld"}],"pg":{"sortBy":"id","sortDir":"asc","offset":0,"limit":50}}},"filtered-by-team":{"summary":"Hooks of a single team","value":{"hooks":[{"id":11,"name":"My gateway-webhook webhook 1","teamId":4,"organizationId":5,"type":"web","typeName":"gateway-webhook","theme":"#c73a63","enabled":true,"gone":false,"url":"https://hook.make.com/1gqnexkk1vwxg2wpj39kg30pzp6uhe7h"}],"pg":{"sortBy":"id","sortDir":"asc","offset":0,"limit":50}}}}}}},"400":{"description":"Bad Request - a query parameter is invalid, for example `teamId` is not a positive integer.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Bad Request","code":"SC400"}}}},"403":{"description":"Forbidden - `teamId` was provided and the user lacks the permission to view hooks in that team.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Insufficient rights.","code":"IM002"}}}},"404":{"description":"Not Found - `teamId` does not belong to the organization.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Team not found in organization.","code":"SC404"}}}}}}},"/organizations/{organizationId}/payments":{"get":{"tags":["Organizations"],"summary":"Get list of past payments","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"payments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"invoice_number":{"type":"integer"},"created":{"type":"string","format":"date-time"},"type_name":{"type":"string"},"status_name":{"type":"string"},"product_name":{"type":"object"},"payment_method":{"type":"object","properties":{"type":{"type":"string"},"card":{"type":"object","properties":{"brand":{"type":"string"},"last4":{"type":"string"},"country":{"type":"string"},"network":{"type":"string"},"exp_year":{"type":"integer"},"exp_month":{"type":"integer"},"fingerprint":{"type":"string"}}}}},"amount_total":{"type":"number"},"currency_code":{"type":"string"},"invoice_url":{"type":"string"},"hosted_invoice_url":{"type":"string"},"period_from":{"type":"string","format":"date"},"period_to":{"type":"string","format":"date"}}}}}},"example":{"payments":[{"id":"in_1JqwmsAtYi1J9zZU7sIuH39K","invoice_number":"6B52691A-0002","created":"2021-10-25T13:42:55.110Z","type_name":"Invoice","status_name":"Pending","product_name":{"cs":"FREE","en":"FREE"},"payment_method":{"type":"card","card":{"brand":"visa","last4":"4242","country":"US","network":"visa","exp_year":2024,"exp_month":4,"fingerprint":"pxynXFWHTejV4FMT"}},"amount_total":"666.00","currency_code":"usd","invoice_url":"https://stripe-upload-api.s3.us-west-1.amazonaws.com/uploads/file_1JqywUAtYi1J9zZUQpexvZno?response-content-disposition=attachment%3B%20filename%3D%22Invoice-6B52691A-0002.pdf%22%3B%20filename%2A%3DUTF-8%27%27Invoice-6B52691A-0002.pdf&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQOF7EIWLKRZD6LU3%2F20211101%2Fus-west-1%2Fs3%2Faws4_request&X-Amz-Date=20211101T114448Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEGwaCXVzLXdlc3QtMiJIMEYCIQCxou2KGsKnJG42r1NP3MiRrpQ00SPlcn1xZB6HHx3ppQIhAK%2FEX6XQcjDW0r8e4yKdtf3JaztyTyk6ekIUkYPiaHjcKvoDCBUQABoMMDMwNDY1NjA3MDYyIgwIY6ogrqimSlDlMhEq1wMukQCMF4exUATqXHwmmHC%2BmvZAIEbVes0%2FpMFjrg%2BEGul2ljp6GlR4o%2FBvIooJQ0fc2Z4gMLoHMeoLgO5l5Riy7Rg%2FltszuhaJqH%2Bynv%2Fjn1iuBs3LA3z2P2dyVjoEdLjGGWFoDFU%2BfPBCRPrZdlXPHoZTd%2BTNsE6cul%2F%2Fy6klQs0769cFzh03TyfCI1YzxhpSMNqSHZluWA9Cn45Z6u6Km4YpPEi4JSmuYVpzYT6rykyp1dD5S7YMQCg%2BGAGfnuz3fUy6WPh%2FO3CG5KbvEEI1CoDZ6t9jW4IwiBmRRjrso8E%2BMGo8Nc%2FsgddhRiq6QqzsgdEWsrqcMW5%2BVOTtOB%2F2xHXLm1Cq4REwezaViJcDWQFYB9Uw%2FJxa04JU0MD4iy5mjNu%2Bq5LetnLJOCrElb1GefXdHfDeJoBHPug2Ou9rCUU56xsK7T9r%2FL%2F1l0eUfp4NEoTTi6aRE%2FBURtoKTapY0yTizZiVudtYPYGA3Vi3PQlRWCrlvXFPyEk9fRzhpLMVWJbx24TTCN9BhuGAXSck1MFhSBnCpigp%2FPoZlzPQ2eKdKw6iaVbvSD1yf%2BXskhjVvEvdLtOy7Ov4mZH%2Btqq%2B335SkArhB8pkAIRWpLJHi1Kyx2aTj2kwiqP%2FiwY6pAF0q2OG7omGpklvNTB0UoyR2BijWKOGVjshqyC%2Fy6%2FeI3yuDy1Rrpi7nCGyx1f%2BISbgShoW19X2QxZg7oja6XvPj%2FppvKvNV%2BCAFG6fIolKDecD5SRs9jAO5%2FHqVa0TRfdS2m5R0jYKs5SCAn3UlPqbI02%2FKOuGqqIfcgiFCYXDTyRC8xgoqhcQYbKxxnaO7pkYXX3GcHvv%2FoMBtJJTU39EdlDlOw%3D%3D&X-Amz-Signature=8f16f7afe521ac90fa324304f18e4c7179d632fd7a04a1f051ff4710073c2cd9","hosted_invoice_url":"https://invoice.stripe.com/i/acct_1J0LwfAtYi1J9zZU/test_YWNjdF8xSjBMd2ZBdFlpMUo5elpVLF9LV2tkeG5FMm9tRFRvT29GN1ZlSXlhTFFSY1h4aEVG01000rqJfGhG","period_from":"2021-11-01T14:40:07.000Z","period_to":"2021-11-01T14:40:07.000Z"}]}}}}}}},"/organizations/{organizationId}/subscription":{"get":{"tags":["Organizations"],"summary":"Get detail of an active subscription","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"product":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"nextBill":{"type":"string","format":"datetime"},"price":{"type":"object","properties":{"id":{"type":"number"},"price":{"type":"number"},"currencyCode":{"type":"string"},"period":{"type":"string"}}},"coupon":{"type":"object","properties":{"validFrom":{"type":"string","format":"datetime"},"validTo":{"type":"string","format":"datetime"},"price":{"type":"number"},"currencyCode":{"type":"string"},"productId":{"type":"number"},"productName":{"type":"string"}}}}},"pauseStartsAt":{"type":"string","format":"date-time","nullable":true,"description":"When the pause becomes effective (end of the current paid period). Null when not paused."},"pauseEndsAt":{"type":"string","format":"date-time","nullable":true,"description":"Scheduled auto-resume date. Null when not paused."},"isSubscriptionPaused":{"type":"boolean","description":"True while the pause is in effect (subscription.pause_applied is true)."}}},"example":{"product":{"id":1,"name":"FREE","nextBill":"2021-11-26T13:31:00.082Z","price":{"id":1,"price":"0.00","currencyCode":"USD","period":"1 month"},"coupon":{"validFrom":"2021-12-12T10:47:05.334Z","validTo":"2021-12-19T10:47:17.768Z","price":"3.00","currencyCode":"usd","productId":4,"productName":"Teams"}},"pauseStartsAt":null,"pauseEndsAt":null,"isSubscriptionPaused":false}}}}}},"post":{"tags":["Organizations"],"summary":"Create a new subscription","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"priceId":{"type":"number"},"couponCode":{"type":"string"},"customer":{"type":"object","properties":{"email":{"type":"string","format":"email"},"name":{"type":"string"},"isBusiness":{"type":"boolean"},"companyName":{"type":"string"},"taxId":{"type":"string"},"countryId":{"type":"number"},"city":{"type":"string"},"line1":{"type":"string"},"line2":{"type":"string"},"postalCode":{"type":"string"},"state":{"type":"string"}},"required":["email","name","isBusiness","countryId"]}},"required":["priceId"]},"example":{"priceId":3,"couponCode":null,"customer":{"email":"customer@email.com","name":"John Doe","isBusiness":false,"countryId":1,"city":"Prague","line1":"Some street 1","line2":"Citypart 2"}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"number"},"url":{"type":"string"},"subscriptionId":{"type":"number"}}},"example":{"sessionId":123,"url":"http://foo.bar","subscriptionId":519}}}}}},"patch":{"tags":["Organizations"],"summary":"Change subscription","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"priceId":{"type":"number"},"customer":{"type":"object","properties":{"email":{"type":"string","format":"email"},"name":{"type":"string"},"isBusiness":{"type":"boolean"},"companyName":{"type":"string"},"taxId":{"type":"string"},"countryId":{"type":"number"},"city":{"type":"string"},"line1":{"type":"string"},"line2":{"type":"string"},"postalCode":{"type":"string"},"state":{"type":"string"}},"required":["email","name","isBusiness","countryId"]}},"required":["priceId"]},"example":{"priceId":3,"customer":{"email":"customer@email.com","name":"John Doe","isBusiness":false,"countryId":1,"city":"Prague","line1":"Some street 1","line2":"Citypart 2"}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}},"delete":{"tags":["Organizations"],"summary":"Cancel the active subscription","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/organizations/{organizationId}/subscription/pause":{"post":{"tags":["Organizations"],"summary":"Pause the active subscription","description":"Schedules a pause for the active monthly self-service subscription.\nThe pause becomes effective at the end of the current paid period and\nis automatically resumed on `resumeAt`. While paused the organization\nis treated as unlicensed (0 credits) and Stripe collection is suspended.\n","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"resumeAt":{"type":"string","format":"date-time","description":"Date when the subscription should automatically resume. Must be after the current period end and within 12 months."}},"required":["resumeAt"]},"example":{"resumeAt":"2026-09-01T00:00:00.000Z"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/organizations/{organizationId}/subscription/unpause":{"post":{"tags":["Organizations"],"summary":"Resume the subscription (cancel scheduled pause or resume now)","description":"Ends the pause for the subscription. If the pause is still scheduled\n(current period not yet ended) it is simply cancelled — no charge,\nno billing reset. If the pause is in effect, the subscription is\nresumed immediately, billing anchor is reset to now and a fresh\nperiod is charged.\n","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/organizations/{organizationId}/subscription/payment-method-types":{"get":{"tags":["Organizations"],"summary":"List payment method types","description":"Returns a list of available payment method types for the organization's subscription.","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"paymentMethodTypes":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"},"canBeDefaultForSubscription":{"type":"boolean"},"canBeDefaultForExtras":{"type":"boolean"}}}}}},"example":{"paymentMethodTypes":[{"value":"card","label":"Card","canBeDefaultForSubscription":true,"canBeDefaultForExtras":true},{"value":"us_bank_account","label":"US bank account","canBeDefaultForSubscription":true,"canBeDefaultForExtras":false}]}}}}}}},"/organizations/{organizationId}/subscription/payment-methods":{"get":{"tags":["Organizations"],"summary":"List payment methods","description":"Returns a list of payment methods for the organization's subscription.","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"paymentMethods":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"valid":{"type":"boolean"},"customerDefaultMethod":{"type":"boolean"},"customerDefaultExtrasMethod":{"type":"boolean"},"isImmediate":{"type":"boolean"},"created":{"type":"string","format":"date-time"},"methodDetails":{"type":"object","properties":{"brand":{"type":"string"},"display_brand":{"type":"string"},"last4":{"type":"string"}}}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}}}}}}}},"/organizations/{organizationId}/subscription/payment-methods/{paymentMethodId}":{"delete":{"tags":["Organizations"],"summary":"Delete a payment method","description":"Deletes a payment method from the organization's subscription.","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization."},{"name":"paymentMethodId","in":"path","schema":{"type":"string"},"required":true,"description":"The ID of the payment method."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer","example":1}}}}}}}}},"/organizations/{organizationId}/subscription/payment-methods/{paymentMethodId}/default":{"patch":{"tags":["Organizations"],"summary":"Set default payment method","description":"Sets a payment method as the default for the organization's subscription.","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization."},{"name":"paymentMethodId","in":"path","schema":{"type":"string"},"required":true,"description":"The ID of the payment method."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"string","enum":["extras","both","subscription"],"description":"What to set as default. Defaults to 'both'. 'extras' and 'both' throw 400 if the payment method is not immediate. 'subscription' sets default for subscription only."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"paymentMethodId":{"type":"string"},"paymentMethodType":{"type":"string"},"isDefaultForSubscription":{"type":"boolean"},"isDefaultForExtras":{"type":"boolean"}}}}}}}}},"/organizations/{organizationId}/subscription-free":{"post":{"tags":["Organizations"],"summary":"Sets Free plan subscription","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"required":false}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"integer"},"subscriptionId":{"type":"integer"}}},"example":{"customerId":213,"subscriptionId":371}}}}}}},"/organizations/{organizationId}/universal-discount":{"get":{"tags":["Organizations"],"summary":"Get universal discount","description":"Returns the current universal discount (active or dormant) for the organization. The user must have the 'payment edit' organization permission or the 'organization view' admin permission.","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":10}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"universalDiscount":{"type":"object","nullable":true,"properties":{"id":{"type":"integer"},"type":{"type":"string"},"percentOff":{"type":"number"},"validTo":{"type":"string","format":"date-time","nullable":true},"rules":{"type":"object","properties":{"lost_on_cancel":{"type":"boolean"},"lost_on_price_downgrade":{"type":"boolean"},"lost_on_price_upgrade":{"type":"boolean"},"lost_on_product_downgrade":{"type":"boolean"},"lost_on_product_upgrade":{"type":"boolean"},"lost_on_other_discount":{"type":"boolean"},"applies_to_extras":{"type":"boolean"},"redeemable_by_admin":{"type":"boolean"},"redeemable_by_user":{"type":"boolean"}}},"isActive":{"type":"boolean"},"bannerText":{"type":"string","nullable":true},"postClaimText":{"type":"string","nullable":true},"redeemUntil":{"type":"string","format":"date-time","nullable":true},"canRedeemOnCurrentPlan":{"type":"boolean"}}}}},"example":{"universalDiscount":null}}}}}}},"/organizations/{organizationId}/universal-discount/claim-cancellation-offer":{"post":{"tags":["Organizations"],"summary":"Claim cancellation offer","description":"Claims a cancellation offer discount for the organization. The user must have the 'payment edit' permission on the organization. The organization must be eligible (no existing universal discount, no active coupon/promo).","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer","minimum":1},"required":true,"example":10}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer","example":1}}},"example":{"ok":1}}}}}}},"/organizations/{organizationId}/universal-discount/redeem":{"post":{"tags":["Organizations"],"summary":"Redeem universal discount on current plan","description":"Activates a dormant universal discount on the user's current subscription. The current price must be eligible and no other discount can be active.","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":10}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"universalDiscountId":{"type":"integer","description":"The ID of the dormant universal discount to redeem","example":42}},"required":["universalDiscountId"]},"example":{"universalDiscountId":42}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer","example":1}}},"example":{"ok":1}}}}}}},"/organizations/{organizationId}/invite":{"post":{"tags":["Organizations"],"summary":"Invite a user to the organization","security":[{"token":["organizations:write"]}],"description":"Invite a user to the organization. To automatically add the user to teams, specify IDs of the teams. The user gets the team role **member**. You can change the user team role with the API call `POST /users/{userId}/user-team-roles/{teamId}`.","parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"usersRoleId":{"type":"integer","description":"The ID of the user organization role assigned to the invited user. Get list of user role IDs from the API call `GET /users/roles`."},"email":{"type":"string","description":"The user registration email.","format":"email"},"name":{"type":"string","description":"The user name visible in the team and organization interface. The name may contain only letters, numbers, spaces, and the following special characters: `'`, `-`, `.`, `(`, `)`, `*`, `+`, `,`, `@`, `_`, `/`. The name must not start or end with a space."},"note":{"type":"string","description":"Note added to the invitation."},"teamsId":{"type":"array","description":"The list of team IDs to which the invited user will be assigned. The invited user will receive the team role **member**.","items":{"type":"integer"}}},"required":["name","email","usersRoleId"]},"example":{"usersRoleId":12,"email":"tom@make.cloud","name":"Tom","note":"Hi Tom, please join our organization.","teamsId":[5,26]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"language":{"type":"string"},"timezoneId":{"type":"integer"},"localeId":{"type":"integer"},"countryId":{"type":"integer"},"features":{"type":"object","properties":{"allow_apps":{"type":"boolean"}}},"avatar":{"type":"string","format":"uri"},"lastLogin":{"type":"string","format":"date-time"},"tfaStatus":{"type":"integer","nullable":true,"enum":[0,1,2],"description":"Two-factor authentication status:\n- 0: No TFA set\n- 1: TFA active (authenticator app)\n- 2: External authentication (Social SSO)\n\nIt is only supported on Make's public cloud instances.\n"},"supportEligible":{"type":"boolean","description":"Whether the user is eligible for contact support. False if all user's organizations are on Free plan and account is older than 90 days."},"userTeamIds":{"type":"array","nullable":true,"description":"IDs of teams the user belongs to within the organization. Only returned when explicitly requested via cols[]=userTeamIds and organizationId is provided.","items":{"type":"integer"}},"privateSpace":{"nullable":true,"description":"The user's personal private space in the organization. Only returned when explicitly requested via cols[]=privateSpace with organizationId on a public instance.","type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"globalAgentsEnabled":{"type":"boolean"},"type":{"type":"string","enum":["personal"]},"operationsLimit":{"type":"integer","nullable":true},"transferLimit":{"type":"bigint","nullable":true},"consumedOperations":{"type":"integer","nullable":true},"consumedTransfer":{"type":"bigint","nullable":true},"isPaused":{"type":"boolean","nullable":true},"consumedCenticredits":{"type":"integer","nullable":true}}}}},"userOrganizationRole":{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"string"}}}}},"example":{"user":{"id":31,"name":"Tom","email":"tom@make.cloud","language":"en","timezoneId":113,"localeId":18,"countryId":1,"features":{},"avatar":"https://secure.gravatar.com/avatar/ada7391afa4ad83584d00afe3986aef2.jpg?d=mm"},"userOrganizationRole":{"userId":31,"organizationId":1,"usersRoleId":12,"invitation":"pending","organizationTeamsCount":2,"joinedTeamsCount":1}}}}}}}},"/organizations/{organizationId}/user-organization-roles":{"get":{"tags":["Organizations / User organization roles"],"summary":"List user roles","security":[{"token":["organizations:read"]}],"description":"Retrieves information about all users and their roles in the organization with the specified `organizationId`.","parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"all-cols":{"value":["userId","organizationId","userRoleId","invitation","organizationTeamsCount","joinedTeamsCount"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userOrganizationRoles":{"type":"array","items":{"allOf":[{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"string"}}},{"type":"object","properties":{"organizationTeamsCount":{"type":"integer"},"joinedTeamsCount":{"type":"integer"}}}]}}}},"examples":{"list":{"summary":"List user roles","description":"List all users and their roles in the specified organization.","value":{"userOrganizationRoles":[{"userId":1,"organizationId":11,"usersRoleId":11,"invitation":null},{"userId":2,"organizationId":11,"usersRoleId":13,"invitation":"expired"}]}},"all-cols":{"summary":"Get all information","description":"Get all available information about every user role in the specified organization.","value":{"userOrganizationRoles":[{"userId":1,"organizationId":11,"usersRoleId":11,"invitation":null,"organizationTeamsCount":2,"joinedTeamsCount":2},{"userId":2,"organizationId":11,"usersRoleId":13,"invitation":"expired","organizationTeamsCount":2,"joinedTeamsCount":0}]}}}}}}}}},"/organizations/{organizationId}/user-organization-roles/{userId}":{"get":{"tags":["Organizations / User organization roles"],"summary":"Get user organization role details","description":"Retrieves information about a user role in an organization with the specified `userId` and `organizationId`. Get all user role IDs with the API call `GET users/roles`.","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11},{"name":"userId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the user.","example":111},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"all-cols":{"value":["userId","organizationId","userRoleId","invitation","organizationTeamsCount","joinedTeamsCount"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userOrganizationRole":{"allOf":[{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"string"}}},{"type":"object","properties":{"organizationTeamsCount":{"type":"integer"},"joinedTeamsCount":{"type":"integer"}}}]}}},"examples":{"detail":{"summary":"Get user role detail","description":"Returns information about the role of the specified user in the organization.","value":{"userOrganizationRole":{"userId":111,"organizationId":11,"usersRoleId":11,"invitation":null}}},"all-cols":{"summary":"Get all available information","description":"Returns all available information about the user role in the organization.","value":{"userOrganizationRole":{"userId":111,"organizationId":11,"usersRoleId":11,"invitation":null,"organizationTeamsCount":2,"joinedTeamsCount":2}}}}}}}}}},"/organizations/{organizationId}/user-organization-roles/transfer":{"post":{"tags":["Organizations / User organization roles"],"summary":"Transfer organization ownership","security":[{"token":["organizations:write"]}],"description":"Transfer organization ownership to the specified user.","parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"integer","description":"The ID of the user."}},"required":["userId"]},"example":{"userId":1}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userOrganizationRoles":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"string"}}}}}},"example":{"userOrganizationRoles":[{"userId":12,"organizationId":10,"usersRoleId":11,"invitation":null},{"userId":1,"organizationId":10,"usersRoleId":12,"invitation":null}]}}}}}}},"/organizations/{organizationId}/sso-certificates":{"get":{"tags":["SSO certificates"],"summary":"Get SSO certificates","security":[{"token":["organizations:read"]}],"description":"Get all SSO certificates.","parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11},{"name":"type","in":"query","schema":{"type":"string"},"required":true,"description":"Type of SSO certificate.","example":"saml"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"},"example":{"ssoCertificates":[{"id":4,"type":"saml","validFrom":"2024-01-29 22:10:51.903509 +00:00","validTo":"2026-02-29 22:10:51.903509 +00:00","certificate":"QOIHAD4CB0igAWIBAgIQSmIEMVCBvWhuNu5CWs4gQzANBgkqhkiG9w0BAQwFADBDMQswCQYDVQQGEwJDWjEWMBQGA1UEChMNQWxwaXJvIHMuci5vLjEcMBoGA1UEAxMTQWxwaXJvU1NMIFJTQSBEViBDQTAeFw0yMjA0MDUwMDAwMDBaFw0yMzA0MDUyMzU5NTlaMB8xHTAbBgNVBAMTFHVzMS5tYWtlLmNlbG9uaXMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArgM5r629dzv9i8kYffmLgd5+PRfvMkiBAPPVUd72k5oebCoJRhLFkvi/pmzgmAhS1hWp7G5y6rv0sKInj8x92Dp8JKIn1E0gHeoG6r1boLoJ7MOqAeEQZLESTmeMEzzcbn81OcTU0/wNZMvOEOxeC6slf/6wszy2W6xLgpnyj2z7LZXuV00ICOSH5F9UyH8Za+be4JI22w3DVlK4c9Y/lWsp2psjEv5BZUS3+++YJhniL7I5YfZwEg92KECOicc6fkSfIVFLnABbIoA0/+lYEGUxl9oZ45e1TcBvtvJyPs58sAIKMRqJ8v+u5hQFksF0Qqtc5L9wtb88FS5j8ormAwIDAQABo4IDEjCCAw4wHwYDVR0jBBgwFoAUE5wiOqhkQBcstSaY2gXJNSUrv1swHQYDVR0OBBYEFJEbmZiFaAjBGHKajL/+FkRr0B2sMA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgJXMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATB6BggrBgEFBQcBAQRuMGwwPgYIKwYBBQUHMAKGMmh0dHA6Ly9hbHBpcm8uY3J0LnNlY3RpZ28uY29tL0FscGlyb1NTTFJTQURWQ0EuY3J0MCoGCCsGAQUFBzABhh5odHRwOi8vYWxwaXJvLm9jc3Auc2VjdGlnby5jb20wggF+BgorBgEEAdZ5AgQCBIIBbgSCAWoBaAB1AK33vvp8/xDIi509nB4+GGq0Zyldz7EMJMqFhjTr3IKKAAABf/nur+8AAAQDAEYwRAIgGw3CjbX7xKIzKNN6Ev1YVCa5f+4OrxH9AppgHj6oefECIEtJUMjb2pn27kslObbMKQLmeP6aNufHGyhjxyt4Zi+3AHYAejKMVNi3LbYg6jjgUh7phBZwMhOFTTvSK8E6V6NS61IAAAF/+e6v9wAABAMARzBFAiBVtaS7cTyK1egJWsyhkXZnbNzji0GfPCt90A//L2u8VgIhAI5wDbveymAq8rDV1jCDTpeRCEKOCfhhV66u2in/GhpZAHcA6D7Q2j71BjUy51covIlryQPTy9ERa+zraeF3fW0GvW4AAAF/+e6vzgAABAMASDBGAiEA0+7dcwKmgfY2QzKaXloyMjbDgnXk2nVBStQSY9Q+LSUCIQCu9YAC4fmabUyKPth/pZ/T9vgBGTPCMJo/WOybAaZnOTBGBgNVHREEPzA9ghR1czEubWFrZS5jZWxvbmlzLmNvbYIlZW50ZXJwcmlzZS51czEuaW50ZWdyb21hdC5jZWxvbmlzLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAkr375yZ1G1GmSWUeYm7aPmfJeqBPrL/SJyQRMFTU2K9K3uJqgmMSQ9RVoi3pM2tKhqTAPYaX1Jnbv1594JPI+GdsSAFX/B8zJppXzkL7sqxWuBj474PFobptJzmtLPJMKIgMypmQ9sbJwIz/LyXGLeJ9yMURyZvw4+g9X1BM8hn8CR83E/ecdnfYcPra2V436lB3HfNSUiw+lFMY6364dCFhPxcrlWfFwhzUGas5dVDl+TR4jpRlLFCk7AQQodyVXInDWZZCNnay1OZha9wtBN0mUos4GLcsNBXYPS/0Wc8LfkFEKDXFlohSb3Wm5wjMPVhdBMixZh7/J2a+H9GNy+bJpWQFf23SgPzHivY1SpFhyeTPwVVarUcbpEDOLKVjQ7DjK3NBf6hIVNwNPk2XAXF5tt7fn1qiPRBJlAwzvm9hzgAIckBg6eS8rG3JYCbp1btVF4HcXO2TFRuqcTbE9BQVuJsafpZ9w8kLPF/zj7IJvSoXiC5iu9VrkbCr4emE+ZnlIkwlfcKqJF7Id+PaSTbpIx9ER8dPSPWqKwjXwi2o15xpOyxYcfUa50bkolkflygezH4+8E4kGcUTk/cmWcLFnBOL5veQF0vZby77+ZtK1rX8P+bb6vw1/QU5nbmp5biuTTuMEVT0Jy1Zq9zdYwrFYc2q+zY8ry/64U1Fmn11","status":"active","deactivationDate":null},{"id":3,"type":"saml","validFrom":"2023-01-29 22:10:51.903509 +00:00","validTo":"2025-02-29 22:10:51.903509 +00:00","certificate":"AOIHAD4CB0igAWIBAgIQSmIEMVCBvWhuNu5CWs4gQzANBgkqhkiG9w0BAQwFADBDMQswCQYDVQQGEwJDWjEWMBQGA1UEChMNQWxwaXJvIHMuci5vLjEcMBoGA1UEAxMTQWxwaXJvU1NMIFJTQSBEViBDQTAeFw0yMjA0MDUwMDAwMDBaFw0yMzA0MDUyMzU5NTlaMB8xHTAbBgNVBAMTFHVzMS5tYWtlLmNlbG9uaXMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArgM5r629dzv9i8kYffmLgd5+PRfvMkiBAPPVUd72k5oebCoJRhLFkvi/pmzgmAhS1hWp7G5y6rv0sKInj8x92Dp8JKIn1E0gHeoG6r1boLoJ7MOqAeEQZLESTmeMEzzcbn81OcTU0/wNZMvOEOxeC6slf/6wszy2W6xLgpnyj2z7LZXuV00ICOSH5F9UyH8Za+be4JI22w3DVlK4c9Y/lWsp2psjEv5BZUS3+++YJhniL7I5YfZwEg92KECOicc6fkSfIVFLnABbIoA0/+lYEGUxl9oZ45e1TcBvtvJyPs58sAIKMRqJ8v+u5hQFksF0Qqtc5L9wtb88FS5j8ormAwIDAQABo4IDEjCCAw4wHwYDVR0jBBgwFoAUE5wiOqhkQBcstSaY2gXJNSUrv1swHQYDVR0OBBYEFJEbmZiFaAjBGHKajL/+FkRr0B2sMA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgJXMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATB6BggrBgEFBQcBAQRuMGwwPgYIKwYBBQUHMAKGMmh0dHA6Ly9hbHBpcm8uY3J0LnNlY3RpZ28uY29tL0FscGlyb1NTTFJTQURWQ0EuY3J0MCoGCCsGAQUFBzABhh5odHRwOi8vYWxwaXJvLm9jc3Auc2VjdGlnby5jb20wggF+BgorBgEEAdZ5AgQCBIIBbgSCAWoBaAB1AK33vvp8/xDIi509nB4+GGq0Zyldz7EMJMqFhjTr3IKKAAABf/nur+8AAAQDAEYwRAIgGw3CjbX7xKIzKNN6Ev1YVCa5f+4OrxH9AppgHj6oefECIEtJUMjb2pn27kslObbMKQLmeP6aNufHGyhjxyt4Zi+3AHYAejKMVNi3LbYg6jjgUh7phBZwMhOFTTvSK8E6V6NS61IAAAF/+e6v9wAABAMARzBFAiBVtaS7cTyK1egJWsyhkXZnbNzji0GfPCt90A//L2u8VgIhAI5wDbveymAq8rDV1jCDTpeRCEKOCfhhV66u2in/GhpZAHcA6D7Q2j71BjUy51covIlryQPTy9ERa+zraeF3fW0GvW4AAAF/+e6vzgAABAMASDBGAiEA0+7dcwKmgfY2QzKaXloyMjbDgnXk2nVBStQSY9Q+LSUCIQCu9YAC4fmabUyKPth/pZ/T9vgBGTPCMJo/WOybAaZnOTBGBgNVHREEPzA9ghR1czEubWFrZS5jZWxvbmlzLmNvbYIlZW50ZXJwcmlzZS51czEuaW50ZWdyb21hdC5jZWxvbmlzLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAkr375yZ1G1GmSWUeYm7aPmfJeqBPrL/SJyQRMFTU2K9K3uJqgmMSQ9RVoi3pM2tKhqTAPYaX1Jnbv1594JPI+GdsSAFX/B8zJppXzkL7sqxWuBj474PFobptJzmtLPJMKIgMypmQ9sbJwIz/LyXGLeJ9yMURyZvw4+g9X1BM8hn8CR83E/ecdnfYcPra2V436lB3HfNSUiw+lFMY6364dCFhPxcrlWfFwhzUGas5dVDl+TR4jpRlLFCk7AQQodyVXInDWZZCNnay1OZha9wtBN0mUos4GLcsNBXYPS/0Wc8LfkFEKDXFlohSb3Wm5wjMPVhdBMixZh7/J2a+H9GNy+bJpWQFf23SgPzHivY1SpFhyeTPwVVarUcbpEDOLKVjQ7DjK3NBf6hIVNwNPk2XAXF5tt7fn1qiPRBJlAwzvm9hzgAIckBg6eS8rG3JYCbp1btVF4HcXO2TFRuqcTbE9BQVuJsafpZ9w8kLPF/zj7IJvSoXiC5iu9VrkbCr4emE+ZnlIkwlfcKqJF7Id+PaSTbpIx9ER8dPSPWqKwjXwi2o15xpOyxYcfUa50bkolkflygezH4+8E4kGcUTk/cmWcLFnBOL5veQF0vZby77+ZtK1rX8P+bb6vw1/QU5nbmp5biuTTuMEVT0Jy1Zq9zdYwrFYc2q+zY8ry/64U1Fmn11","status":"active","deactivationDate":"2025-09-29 22:10:51.903509 +00:00"},{"id":2,"type":"saml","validFrom":"2024-02-01 22:10:51.903509 +00:00","validTo":"2025-08-01 22:10:51.903509 +00:00","certificate":"11=UAD4CB0igAWIBAgIQSmIEMVCBvWhuNu5CWs4gQzANBgkqhkiG9w0BAQwFADBDMQswCQYDVQQGEwJDWjEWMBQGA1UEChMNQWxwaXJvIHMuci5vLjEcMBoGA1UEAxMTQWxwaXJvU1NMIFJTQSBEViBDQTAeFw0yMjA0MDUwMDAwMDBaFw0yMzPlMDUyMzU5NTlaMB8xHTAbBgNVBAMTFHVzMS5tYWtlLmNlbG9uaXMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArgM5r629dzv9i8kYffmLgd5+PRfvMkiBAPPVUd72k5oebCoJRhLFkvi/pmzgmAhS1hWp7G5y6rv0sKInj8x92Dp8JKIn1E0gHeoG6r1boLoJ7MOqAeEQZLESTmeMEzzcbn81OcTU0/wNZMvOEOxeC6slf/6wszy2W6xLgpnyj2z7LZXuV00ICOSH5F9UyH8Za+be4JI22w3DVlK4c9Y/lWsp2psjEv5BZUS3+++YJhniL7I5YfZwEg92KECOicc6fkSfIVFLnABbIoA0/+lYEGUxl9oZ45e1TcBvtvJyPs58sAIKMRqJ8v+u5hQFksF0Qqtc5L9wtb88FS5j8ormAwIDAQABo4IDEjCCAw4wHwYDVR0jBBgwFoAUE5wiOqhkQBcstSaY2gXJNSUrv1swHQYDVR0OBBYEFJEbmZiFaAjBGHKajL/+FkRr0B2sMA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgJXMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATB6BggrBgEFBQcBAQRuMGwwPgYIKwYBBQUHMAKGMmh0dHA6Ly9hbHBpcm8uY3J0LnNlY3RpZ28uY29tL0FscGlyb1NTTFJTQURWQ0EuY3J0MCoGCCsGAQUFBzABhh5odHRwOi8vYWxwaXJvLm9jc3Auc2VjdGlnby5jb20wggF+BgorBgEEAdZ5AgQCBIIBbgSCAWoBaAB1AK33vvp8/xDIi509nB4+GGq0Zyldz7EMJMqFhjTr3IKKAAABf/nur+8AAAQDAEYwRAIgGw3CjbX7xKIzKNN6Ev1YVCa5f+4OrxH9AppgHj6oefECIEtJUMjb2pn27kslObbMKQLmeP6aNufHGyhjxyt4Zi+3AHYAejKMVNi3LbYg6jjgUh7phBZwMhOFTTvSK8E6V6NS61IAAAF/+e6v9wAABAMARzBFAiBVtaS7cTyK1egJWsyhkXZnbNzji0GfPCt90A//L2u8VgIhAI5wDbveymAq8rDV1jCDTpeRCEKOCfhhV66u2in/GhpZAHcA6D7Q2j71BjUy51covIlryQPTy9ERa+zraeF3fW0GvW4AAAF/+e6vzgAABAMASDBGAiEA0+7dcwKmgfY2QzKaXloyMjbDgnXk2nVBStQSY9Q+LSUCIQCu9YAC4fmabUyKPth/pZ/T9vgBGTPCMJo/WOybAaZnOTBGBgNVHREEPzA9ghR1czEubWFrZS5jZWxvbmlzLmNvbYIlZW50ZXJwcmlzZS51czEuaW50ZWdyb21hdC5jZWxvbmlzLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAkr375yZ1G1GmSWUeYm7aPmfJeqBPrL/SJyQRMFTU2K9K3uJqgmMSQ9RVoi3pM2tKhqTAPYaX1Jnbv1594JPI+GdsSAFX/B8zJppXzkL7sqxWuBj474PFobptJzmtLPJMKIgMypmQ9sbJwIz/LyXGLeJ9yMURyZvw4+g9X1BM8hn8CR83E/ecdnfYcPra2V436lB3HfNSUiw+lFMY6364dCFhPxcrlWfFwhzUhh$5dVDl+UR4jpRlLFCk7AQQodyVXInDWZZCNnay1OZha9wtBN0mUos4GLcsNBXYPS/0Wc8LfkFEKDXFlohSb3Wm5wjMPVhdBMixZh7/J2a+H9GNy+bJpWQFf23SgPzHivY1SpFhyeTPwVVarUcbpEDOLKVjQ7DjK3NBf6hIVNwNPk2XAXF5tt7fn1qiPRBJlAwzvm9hzgAIckBg6eS8rG3JYCbp1btVF4HcXO2TFRuqcTbE9BQVuJsafpZ9w8kLPF/zj7IJvSoXiC5iu9VrkbCr4emE+ZnlIkwlfcKqJF7Id+PaSTbpIx9ER8dPSPWqKwjXwi2o15xpOyxYcfUa50bkolkflygezH4+8E4kGcUTk/cmWcLFnBOL5veQF0vZby77+ZtK1rX8P+bb6vw1/QU5nbmp5biuTTuMEVT0Jy1Zq9zdYwrFYc2q+zY8ry/64U1Fqq9M","status":"inactive","deactivationDate":null}]}}}}}}},"/organizations/{organizationId}/test-clock":{"get":{"x-internal":true,"tags":["Organizations"],"summary":"Retrieve a test clock (TEST ONLY)","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"testClock":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"created":{"type":"integer"},"deletes_after":{"type":"integer"},"frozen_time":{"type":"integer"},"livemode":{"type":"boolean"},"status":{"type":"string"}}}}},"example":{"testClock":{"id":"clock_1KrL3oAtYi1J9zZUiK1TLd3g","object":"test_helpers.test_clock","created":1650628444,"deletes_after":1653220444,"frozen_time":1650666666,"livemode":false,"status":"ready"}}}}}}}},"/organizations/{organizationId}/test-clock/advance":{"post":{"x-internal":true,"tags":["Organizations"],"summary":"Advance a test clock (TEST ONLY)","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"timestampInSeconds":{"type":"number"}},"required":["timestampInSeconds"]},"example":{"timestampInSeconds":1650666666}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/organizations/{organizationId}/test-pause-unpause":{"post":{"x-internal":true,"tags":["Organizations"],"summary":"Trigger a pause/unpause task for an specific organization (TEST ONLY)","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/organizations/{organizationId}/variables":{"get":{"tags":["Organizations"],"summary":"List organization variables","description":"Retrieves the collection of organization variables. The response contains all organization variables if your account has the custom variables feature available. Otherwise, the response contains only Make system variables.\n\nCheck availability of the custom variables feature with the API call `GET /organizations/{organizationId}`. If the response contains `\"customVariables\": true` pair in the `license` object then you have access to the custom variables feature.\n\nRefer to the [Make pricing page](https://www.make.com/en/help/general/pricing-parameters) for Make pricing plans overview.","security":[{"token":["organization-variables:read"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organizationVariables":{"type":"object","properties":{"typeId":{"type":"integer"},"name":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"boolean"},{"type":"number"},{"type":"object","additionalProperties":{}},{"type":"array","items":{}}]},"isSystem":{"type":"boolean"}}}}},"example":{"organizationVariables":{"name":"userId","typeId":1,"value":123,"isSystem":false}}}}}}},"post":{"tags":["Organizations"],"summary":"Create organization variable","description":"Creates new organization variable. You can check the availability of the custom variables feature with the API call `GET /organizations/{organizationId}`. If the response contains `\"customVariables\": true` pair in the `license` object then you have access to the custom variables feature.\n\nA successful response contains all information about the new variable. If you don't have the custom variables feature available then the API call returns the error 404.\n\nRefer to the [Make pricing page](https://www.make.com/en/help/general/pricing-parameters) for Make pricing plans overview.","security":[{"token":["organization-variables:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"typeId":{"type":"number","description":"Number representing the type of the custom variable. The mapping of `typeId` and variable types is as follows:\n\n- 1: `number`,\n - 2: `string`,\n - 3: `boolean`,\n - 4: `date`in ISO 8601 compliant format `YYYY-MM-DDTHH:mm:ss.sssZ`. For example: `1998-03-06T12:31:00.000Z`."},"value":{"oneOf":[{"type":"string"},{"type":"boolean"},{"type":"number"},{"type":"object","additionalProperties":{}},{"type":"array","items":{}}],"description":"Value assigned to the custom variable."},"name":{"type":"string","description":"The name of the variable. You can use letters, digits, `$` and `_` characters in the custom variable name."}}},"example":{"typeId":1,"value":123,"name":"userId"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organizationVariable":{"type":"object","properties":{"typeId":{"type":"integer"},"name":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"boolean"},{"type":"number"},{"type":"object","additionalProperties":{}},{"type":"array","items":{}}]},"isSystem":{"type":"boolean"}}}}},"example":{"organizationVariable":{"name":"userId","typeId":1,"value":123,"isSystem":false}}}}}}}},"/organizations/{organizationId}/variables/{variableName}":{"patch":{"tags":["Organizations"],"summary":"Update organization variable","description":"Updates custom organization variable with the specified variable `name`. Only parameters specified in the request body are updated.\n\nYou can check the availability of the custom variables feature with the API call `GET /organizations/{organizationId}`. If the response contains `\"customVariables\": true` pair in the `license` object then you have access to the custom variables feature.\n\nA successful response contains all information about the updated variable. If you don't have the custom variables feature available then the API call returns the error 404.\n\nRefer to the [Make pricing page](https://www.make.com/en/help/general/pricing-parameters) for the Make pricing plans overview.\n\nUpdate the variable `typeId` accordingly when you are updating the variable `value`. Make checks whether the variable type and value match in the request body. There is no check for incorrect variable type when you update only variable value and _vice versa_.","security":[{"token":["organization-variables:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11},{"name":"variableName","in":"path","schema":{"type":"string"},"required":true,"description":"The name of the custom variable.","example":"userID"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"typeId":{"type":"number","description":"Number representing the type of the custom variable. The mapping of `typeId` and variable types is as follows:\n\n- 1: `number`,\n - 2: `string`,\n - 3: `boolean`,\n - 4: `date`in ISO 8601 compliant format `YYYY-MM-DDTHH:mm:ss.sssZ`. For example: `1998-03-06T12:31:00.000Z`."},"value":{"oneOf":[{"type":"string"},{"type":"boolean"},{"type":"number"},{"type":"object","additionalProperties":{}},{"type":"array","items":{}}],"description":"Value assigned to the custom variable."}}},"example":{"value":251}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organizationVariable":{"type":"object","properties":{"typeId":{"type":"integer"},"name":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"boolean"},{"type":"number"},{"type":"object","additionalProperties":{}},{"type":"array","items":{}}]},"isSystem":{"type":"boolean"}}}}},"example":{"organizationVariable":{"name":"userId","typeId":1,"value":251}}}}}}},"delete":{"tags":["Organizations"],"summary":"Delete organization variable","description":"Deletes organization variable.\n\nIf you don't have the custom variables feature available then the API call returns the error 404. Check the availability of the custom variables feature with the API call `GET /organizations/{organizationId}`. If the response contains `\"customVariables\": true` pair in the `license` object then you have access to the custom variables feature.\n\nRefer to the [Make pricing page](https://www.make.com/en/help/general/pricing-parameters) for Make pricing plans overview.","security":[{"token":["organization-variables:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11},{"name":"variableName","in":"path","schema":{"type":"string"},"required":true,"description":"The name of the custom variable.","example":"userID"},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"description":"Set to `true` to confirm deleting the custom variable. Otherwise the API call fails with the error IM004 (406).","example":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/organizations/{organizationId}/variables/{variableName}/history":{"get":{"tags":["Organizations"],"summary":"History of custom variable updates","description":"Gets the history of updates of the specified custom variable. The response contains the ID value of the variable history entry and a `diffObject`. The `diffObject` contains:\n\n- the original value,\n - the new value,\n - the timestamp of the update,\n - the author of the update.\n\nIf the variable doesn't have any updates, the `diffObject` contains the current value of the variable instead of the original and new values.\n\nThe update history entries are sorted from newest to latest.","security":[{"token":["organization-variables:read"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11},{"name":"variableName","in":"path","schema":{"type":"string"},"required":true,"description":"The name of the custom variable.","example":"userID"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organizationVariableHistory":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"integer"},"diffObject":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"typeId":{"type":"integer"}}},"changed":{"type":"string","format":"date"},"action":{"type":"string","description":"organization_variable_created or organization_variable_edited or team_variable_created or team_variable_edited"},"author":{"type":"string"}}},{"type":"object","properties":{"id":{"type":"integer"},"diffObject":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"typeId":{"type":"integer"}}},"changed":{"type":"string","format":"date"},"action":{"type":"string"},"author":{"type":"string"}}}]}}}},"example":{"organizationVariableHistory":[{"id":1,"diffObject":{"name":"userId","value":25,"typeId":1},"changed":"2022-08-02T09:37:05.364Z","action":"organization_variable_created","author":"Jon Doe"},{"id":2,"diffObject":{"old":{"value":25,"typeId":1},"new":{"value":140,"typeId":1}},"changed":"2022-08-02T09:37:05.364Z","action":"organization_variable_edited","author":"Jon Doe"}]}}}}}}},"/organizations/{organizationId}/domains/{organizationDomainId}/verify":{"post":{"x-internal":true,"tags":["Organizations / Domain claimed"],"summary":"Organization domain verification","security":[{"token":["organizations:write"]}],"description":"Verify the domain for given organization using DNS TXT record method.","parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11},{"name":"organizationDomainId","in":"path","description":"The ID of the organization domain.","schema":{"type":"integer"},"required":true,"example":5}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"},"example":{"organizationDomain":{"id":"5,","organizationId":"11,","domain":"make.com,","verificationMethod":"DNS,","verificationCode":"b2b9ed0b-84f2-438d-b92f-57fe81d0229e,","status":"verified,","statusDescription":"null,","created":"2023-11-05T09:22:31.249Z,","verified":"2023-11-10T09:20:22.219Z"}}}}}}}},"/organizations/{organizationId}/usage":{"get":{"tags":["Organizations"],"summary":"Get organization usage","description":"Retrieves a list of daily centicredits, operations, and data transfer usage across all scenarios within all teams in the specified organization for the past 30 days.\n\nBy default, the endpoint uses the timezone of the user making the API call to define the start and end of each day in the 30-day timeframe.\n\nTo use the organization's timezone instead, set the `organizationTimezone` parameter to `true`. This ensures that the daily aggregates align with the organization's operational hours. This is especially useful for scenarios where aggregated data needs to align with the organization's operational hours.\n\nFor instance, a remote data analyst in India working for a Czech company can set `organizationTimezone=true` to ensure the usage data reflects the company's timezone, providing more relevant and accurate insights for organizational reporting and analysis.\n\nFor more information on timezones in Make, please refer to our [Help Center article](https://www.make.com/en/help/general/manage-time-zones).\n","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11},{"name":"organizationTimezone","in":"query","schema":{"type":"boolean"},"required":false,"description":"When set to `true`, the endpoint will calculate and return usage data based on the organization's timezone instead of the user's local timezone.","example":true}],"responses":{"200":{"description":"Successfully retrieved usage data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"operations":{"type":"integer"},"dataTransfer":{"type":"integer"},"centicredits":{"type":"bigint"}}}}}},"example":{"data":[{"date":"2024-05-30","operations":9,"dataTransfer":135,"centicredits":900},{"date":"2024-05-31","operations":15,"datatransfer":157,"centicredits":1500}]}}}}}}},"/organizations/{organizationId}/scenarios/executions/search":{"post":{"x-internal":true,"tags":["Organizations"],"summary":"Search organization scenario execution logs","description":"Retrieves execution logs across all scenarios in an organization (or a specific team within the organization), narrowed by `from`/`to`, execution `status`, `scenarioIds`, or a substring of the `errorMessage`.\n\nWhen `from` or `to` are omitted, the time window defaults to the last 7 days. Results are returned in reverse-chronological order.\n\n**The `from` and `to` bounds are applied at UTC-day granularity** — only the calendar-day portion of each timestamp is honored. Executions that occurred earlier or later within the same UTC day as a supplied bound may still appear in the results.\n","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"integer","description":"Lower bound of the time window, as a millisecond Unix timestamp. Defaults to 7 days before `to` when omitted.\n\nApplied at **UTC-day granularity**: the calendar day of this value is the earliest day searched, but executions earlier within that same day may still be returned.\n","example":1700000000000},"to":{"type":"integer","description":"Upper bound of the time window, as a millisecond Unix timestamp. Defaults to the current time when omitted.\n\nApplied at **UTC-day granularity**: the calendar day of this value is the latest day searched, but executions later within that same day may still be returned.\n","example":1700604800000},"teamId":{"type":"integer","description":"Restrict the search to a single team within the organization. When omitted, all teams the authenticated user has access to are searched.","example":27},"errorMessage":{"type":"string","description":"Substring matched against the execution's error message. Matching snippets are returned in the `highlight` field of each result.","example":"timeout"},"scenarioIds":{"type":"array","description":"Restrict the search to the specified scenario IDs.","items":{"type":"integer","minimum":1},"example":[1229,1230]},"status":{"type":"array","description":"Filter executions by status. `1` is for success, `2` is for warning, and `3` is for error.","items":{"type":"integer","enum":[1,2,3]},"example":[3]},"pageSize":{"type":"integer","minimum":1,"maximum":500,"default":50,"description":"The maximum number of executions to return. Capped at `500`.","example":50},"pageIndex":{"type":"integer","minimum":0,"default":0,"description":"The zero-based index of the page to return.","example":0}}},"example":{"from":1700000000000,"to":1700604800000,"status":[3],"errorMessage":"timeout","pageSize":50,"pageIndex":0}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"imtId":{"type":"string","description":"The internal identifier of the execution. Equal to `id` unless an alternate cursor was supplied."},"id":{"type":"string","description":"The execution ID."},"kindId":{"type":"integer","description":"The ID of the scenario the execution belongs to."},"scenarioId":{"type":"integer","description":"The ID of the scenario the execution belongs to."},"scenarioName":{"type":"string","description":"The name of the scenario at the time of the execution."},"timestamp":{"type":"string","format":"date-time","description":"ISO timestamp when the execution started."},"type":{"type":"string","description":"The trigger type of the execution (for example `auto`, `manual`)."},"instant":{"type":"boolean","description":"Whether the scenario was triggered instantly (for example, by a webhook)."},"authorId":{"type":"integer","nullable":true,"description":"The ID of the user who triggered the execution. Null for system-triggered runs."},"teamId":{"type":"integer","nullable":true,"description":"The ID of the team that owns the scenario."},"organizationId":{"type":"integer","description":"The ID of the organization that owns the scenario."},"duration":{"type":"integer","description":"The duration of the execution in milliseconds."},"operations":{"type":"integer","description":"The number of operations consumed by the execution."},"centicredits":{"type":"integer","description":"The number of centicredits consumed by the execution."},"transfer":{"type":"integer","description":"The amount of data transferred during the execution, in bytes."},"status":{"type":"integer","enum":[1,2,3],"description":"The execution status. `1` is for success, `2` is for warning, and `3` is for error."},"eventType":{"type":"string","description":"The execution event type stored in the underlying log entry."},"errorMessage":{"type":"string","nullable":true,"description":"The error message associated with a failed execution. Null when the execution did not produce an error."},"highlight":{"type":"array","nullable":true,"description":"Snippets from the error message that matched the `errorMessage` filter, with the matched substring wrapped in highlight markers. Null when no `errorMessage` filter was applied.","items":{"type":"string"}}}}}}},"example":{"results":[{"imtId":"da518adcd14b4b64ac6358823ccb80ca","id":"da518adcd14b4b64ac6358823ccb80ca","kindId":1229,"scenarioId":1229,"scenarioName":"Sync orders to CRM","timestamp":"2024-11-15T04:35:44.497Z","type":"auto","instant":false,"authorId":null,"teamId":27,"organizationId":11,"duration":19979,"operations":10,"centicredits":1000,"transfer":3942,"status":3,"eventType":"scenario","errorMessage":"Request timed out after 30000ms","highlight":["Request <em>timed</em> out after 30000ms"]}]}}}}}}},"/organizations/{organizationId}/scenarios/executions/io-data/search":{"post":{"x-internal":true,"tags":["Organizations"],"summary":"Full-text search scenario IO data","description":"Searches the module input/output (IO) data produced by scenario executions across the organization (or a specific team) using a free-text `query`. Matches are grouped by execution: each result contains up to 5 IO-data records that matched the query together with the metadata of the parent execution.\n\nUse the optional filters to restrict the search to specific teams, scenarios, apps, modules, or a time window.\n\n**The `from` and `to` bounds are applied at UTC-day granularity** — only the calendar-day portion of each timestamp is honored. IO-data records earlier or later within the same UTC day as a supplied bound may still appear in the results, and the execution metadata attached to each match may include executions from the immediately adjacent UTC days.\n","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","maxLength":100,"description":"The free-text expression to match against scenario module IO data. Supports quoted phrases.","example":"\"order_id\":\"12345\""},"teamId":{"type":"integer","description":"Restrict the search to a single team within the organization. When omitted, all teams the authenticated user has access to are searched.","example":27},"from":{"type":"integer","description":"Lower bound of the time window, as a millisecond Unix timestamp.\n\nApplied at **UTC-day granularity**: the calendar day of this value is the earliest day searched in the IO-data index, but records earlier within that same day may still be returned. Execution metadata joins use this same bound expanded by one day on each side.\n","example":1700000000000},"to":{"type":"integer","description":"Upper bound of the time window, as a millisecond Unix timestamp.\n\nApplied at **UTC-day granularity**: the calendar day of this value is the latest day searched in the IO-data index, but records later within that same day may still be returned. Execution metadata joins use this same bound expanded by one day on each side.\n","example":1700604800000},"scenarioIds":{"type":"array","description":"Restrict the search to the specified scenario IDs.","items":{"type":"integer"},"example":[1229]},"appNames":{"type":"array","description":"Restrict the search to executions that used any of the listed apps (by app name).","items":{"type":"string"},"example":["http","google-sheets"]},"moduleNames":{"type":"array","description":"Restrict the search to executions that used any of the listed module names.","items":{"type":"string"},"example":["ActionSendData"]},"executionIds":{"type":"array","description":"Restrict the search to the specified execution IDs.","items":{"type":"string"},"example":["da518adcd14b4b64ac6358823ccb80ca"]},"status":{"type":"array","description":"Which execution outcome's IO data to full-text search. `1` searches successful (`data`) records, `2` searches warning records, and `3` searches error (`err`) records. Multiple values may be combined. Defaults to `[1, 2, 3]` (all outcomes) when omitted.\n","items":{"type":"integer","enum":[1,2,3]},"default":[1,2,3],"example":[1,2,3]},"pageSize":{"type":"integer","minimum":1,"maximum":500,"default":20,"description":"The maximum number of execution groups to return. Capped at `500`.","example":20},"pageIndex":{"type":"integer","minimum":0,"default":0,"description":"The zero-based index of the page to return.","example":0}},"required":["query"]},"example":{"query":"\"order_id\":\"12345\"","from":1700000000000,"to":1700604800000,"appNames":["http"],"pageSize":20,"pageIndex":0}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"ioData":{"type":"array","description":"Up to 5 IO-data records from the execution that matched the query. Each record contains the bundle fields produced or consumed by a module, plus the metadata listed below.","items":{"type":"object","additionalProperties":true,"properties":{"kind":{"type":"string","description":"The kind of the IO record (for example `input`, `output`)."},"kindId":{"type":"integer","description":"The ID of the scenario the record belongs to."},"executionId":{"type":"string","description":"The ID of the execution the record belongs to."},"metadata":{"type":"object","additionalProperties":true,"description":"Free-form metadata captured alongside the IO record."},"highlight":{"type":"array","items":{"type":"string"},"description":"Snippets from the matched field (`data`, `warning.message`, or `err.message`) that matched `query`, with the matched substring wrapped in `<em>` markers. Empty when nothing matched. Snippets are not remapped to per-bundle paths.\n"},"matchedFields":{"type":"array","items":{"type":"string","enum":["IO_DATA","ERROR_MESSAGE","WARNING_MESSAGE","EXECUTION_ID"]},"description":"Which field(s) of the record actually matched `query` — `IO_DATA` for the module's data, `ERROR_MESSAGE` for an error message, `WARNING_MESSAGE` for a warning message, `EXECUTION_ID` when `query` is itself the execution's ID.\n"}}}},"execution":{"type":"object","properties":{"imtId":{"type":"string","description":"The internal identifier of the execution. Equal to `id` unless an alternate cursor was supplied."},"id":{"type":"string","description":"The execution ID."},"kindId":{"type":"integer","description":"The ID of the scenario the execution belongs to."},"scenarioId":{"type":"integer","description":"The ID of the scenario the execution belongs to."},"scenarioName":{"type":"string","description":"The name of the scenario at the time of the execution."},"timestamp":{"type":"string","format":"date-time","description":"ISO timestamp when the execution started."},"type":{"type":"string","description":"The trigger type of the execution (for example `auto`, `manual`)."},"instant":{"type":"boolean","description":"Whether the scenario was triggered instantly (for example, by a webhook)."},"authorId":{"type":"integer","nullable":true,"description":"The ID of the user who triggered the execution. Null for system-triggered runs."},"teamId":{"type":"integer","nullable":true,"description":"The ID of the team that owns the scenario."},"organizationId":{"type":"integer","description":"The ID of the organization that owns the scenario."},"duration":{"type":"integer","description":"The duration of the execution in milliseconds."},"operations":{"type":"integer","description":"The number of operations consumed by the execution."},"centicredits":{"type":"integer","description":"The number of centicredits consumed by the execution."},"transfer":{"type":"integer","description":"The amount of data transferred during the execution, in bytes."},"status":{"type":"integer","enum":[1,2,3],"description":"The execution status. `1` is for success, `2` is for warning, and `3` is for error."},"eventType":{"type":"string","description":"The execution event type stored in the underlying log entry."},"errorMessage":{"type":"string","nullable":true,"description":"The error message associated with a failed execution. Null when the execution did not produce an error."},"highlight":{"type":"array","nullable":true,"description":"Snippets from the error message that matched the `errorMessage` filter, with the matched substring wrapped in highlight markers. Null when no `errorMessage` filter was applied.","items":{"type":"string"}}}}}}}}},"example":{"results":[{"ioData":[{"kind":"output","kindId":1229,"executionId":"da518adcd14b4b64ac6358823ccb80ca","moduleId":3,"bundle":{"order_id":"12345","total":42.5},"metadata":{"app":"http","module":"ActionSendData"},"highlight":["...,\"order_id\":\"<em>12345</em>\",..."],"matchedFields":["IO_DATA"]}],"execution":{"imtId":"da518adcd14b4b64ac6358823ccb80ca","id":"da518adcd14b4b64ac6358823ccb80ca","kindId":1229,"scenarioId":1229,"scenarioName":"Sync orders to CRM","timestamp":"2024-11-15T04:35:44.497Z","type":"auto","instant":false,"authorId":null,"teamId":27,"organizationId":11,"duration":19979,"operations":10,"centicredits":1000,"transfer":3942,"status":1,"eventType":"scenario","errorMessage":null,"highlight":null}}]}}}}}}},"/organizations/{organizationId}/scenarios/{scenarioId}/executions/{executionId}/io-data/search":{"post":{"x-internal":true,"tags":["Organizations"],"summary":"Full-text search IO data for a single scenario execution","description":"Searches the module input/output (IO) data produced by a single scenario execution using a free-text `query`, and returns **every** matching IO-data record for that execution — no grouping and no pagination.\n\nThe scenario's team is resolved from `scenarioId`; the caller must hold the scenario-logs read permission on that team.\n\n**The `from` and `to` bounds are applied at UTC-day granularity** — only the calendar-day portion of each timestamp is honored. When omitted, the search defaults to the last 7 UTC days, so supply a window that covers the execution's timestamp to search older executions.\n","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11},{"name":"scenarioId","in":"path","description":"The ID of the scenario.","schema":{"type":"integer"},"required":true,"example":1229},{"name":"executionId","in":"path","description":"The ID of the execution.","schema":{"type":"string"},"required":true,"example":"da518adcd14b4b64ac6358823ccb80ca"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","maxLength":100,"description":"The free-text expression to match against the execution's module IO data. Supports quoted phrases.","example":"\"order_id\":\"12345\""},"from":{"type":"integer","description":"Lower bound of the time window, as a millisecond Unix timestamp.\n\nApplied at **UTC-day granularity**: the calendar day of this value is the earliest day searched in the IO-data index, but records earlier within that same day may still be returned.\n","example":1700000000000},"to":{"type":"integer","description":"Upper bound of the time window, as a millisecond Unix timestamp.\n\nApplied at **UTC-day granularity**: the calendar day of this value is the latest day searched in the IO-data index, but records later within that same day may still be returned.\n","example":1700604800000},"appNames":{"type":"array","description":"Restrict the search to IO data produced by any of the listed apps (by app name).","items":{"type":"string"},"example":["http","google-sheets"]},"moduleNames":{"type":"array","description":"Restrict the search to the listed module names.","items":{"type":"string"},"example":["ActionSendData"]},"status":{"type":"array","description":"Which execution outcome's IO data to full-text search. `1` searches successful (`data`) records, `2` searches warning records, and `3` searches error (`err`) records. Multiple values may be combined. Defaults to `[1, 2, 3]` (all outcomes) when omitted.\n","items":{"type":"integer","enum":[1,2,3]},"default":[1,2,3],"example":[1,2,3]}},"required":["query"]},"example":{"query":"\"order_id\":\"12345\"","from":1700000000000,"to":1700604800000,"appNames":["http"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ioData":{"type":"array","description":"Every IO-data record from the execution that matched the query. Each record contains the bundle fields produced or consumed by a module, plus the metadata listed below.","items":{"type":"object","additionalProperties":true,"properties":{"kind":{"type":"string","description":"The kind of the IO record (for example `input`, `output`)."},"kindId":{"type":"integer","description":"The ID of the scenario the record belongs to."},"executionId":{"type":"string","description":"The ID of the execution the record belongs to."},"metadata":{"type":"object","additionalProperties":true,"description":"Free-form metadata captured alongside the IO record."},"highlight":{"type":"array","items":{"type":"string"},"description":"Snippets from the matched field (`data`, `warning.message`, or `err.message`) that matched `query`, with the matched substring wrapped in `<em>` markers. Empty when nothing matched. Snippets are not remapped to per-bundle paths.\n"},"matchedFields":{"type":"array","items":{"type":"string","enum":["IO_DATA","ERROR_MESSAGE","WARNING_MESSAGE"]},"description":"Which field(s) of the record actually matched `query` — `IO_DATA` for the module's data, `ERROR_MESSAGE` for an error message, `WARNING_MESSAGE` for a warning message. This endpoint is already scoped to one execution, so `matchedFields` never includes an execution-id match.\n"}}}},"execution":{"description":"Metadata of the execution, or `null` when no execution document was found in the searched time window.","oneOf":[{"type":"object","properties":{"imtId":{"type":"string","description":"The internal identifier of the execution. Equal to `id` unless an alternate cursor was supplied."},"id":{"type":"string","description":"The execution ID."},"kindId":{"type":"integer","description":"The ID of the scenario the execution belongs to."},"scenarioId":{"type":"integer","description":"The ID of the scenario the execution belongs to."},"scenarioName":{"type":"string","description":"The name of the scenario at the time of the execution."},"timestamp":{"type":"string","format":"date-time","description":"ISO timestamp when the execution started."},"type":{"type":"string","description":"The trigger type of the execution (for example `auto`, `manual`)."},"instant":{"type":"boolean","description":"Whether the scenario was triggered instantly (for example, by a webhook)."},"authorId":{"type":"integer","nullable":true,"description":"The ID of the user who triggered the execution. Null for system-triggered runs."},"teamId":{"type":"integer","nullable":true,"description":"The ID of the team that owns the scenario."},"organizationId":{"type":"integer","description":"The ID of the organization that owns the scenario."},"duration":{"type":"integer","description":"The duration of the execution in milliseconds."},"operations":{"type":"integer","description":"The number of operations consumed by the execution."},"centicredits":{"type":"integer","description":"The number of centicredits consumed by the execution."},"transfer":{"type":"integer","description":"The amount of data transferred during the execution, in bytes."},"status":{"type":"integer","enum":[1,2,3],"description":"The execution status. `1` is for success, `2` is for warning, and `3` is for error."},"eventType":{"type":"string","description":"The execution event type stored in the underlying log entry."},"errorMessage":{"type":"string","nullable":true,"description":"The error message associated with a failed execution. Null when the execution did not produce an error."},"highlight":{"type":"array","nullable":true,"description":"Snippets from the error message that matched the `errorMessage` filter, with the matched substring wrapped in highlight markers. Null when no `errorMessage` filter was applied.","items":{"type":"string"}}}},{"type":"null"}]}}},"example":{"ioData":[{"kind":"output","kindId":1229,"executionId":"da518adcd14b4b64ac6358823ccb80ca","moduleId":3,"bundle":{"order_id":"12345","total":42.5},"metadata":{"app":"http","module":"ActionSendData"},"highlight":["...,\"order_id\":\"<em>12345</em>\",..."],"matchedFields":["IO_DATA"]}],"execution":{"imtId":"da518adcd14b4b64ac6358823ccb80ca","id":"da518adcd14b4b64ac6358823ccb80ca","kindId":1229,"scenarioId":1229,"scenarioName":"Sync orders to CRM","timestamp":"2024-11-15T04:35:44.497Z","type":"auto","instant":false,"authorId":null,"teamId":27,"organizationId":11,"duration":19979,"operations":10,"centicredits":1000,"transfer":3942,"status":1,"eventType":"scenario","errorMessage":null,"highlight":null}}}}}}}},"/organizations/{organizationId}/scenarios/executions/io-data/counts":{"post":{"x-internal":true,"tags":["Organizations"],"summary":"Count scenarios and executions matching a full-text query","description":"Counts how many scenarios and executions across the organization (or a specific team) produced module input/output (IO) data matching a free-text `query`. Returns global, exact totals plus a per-scenario breakdown of how many distinct executions matched.\n\nCounts are computed over the entire match set (not a page): there is no client-facing pagination. Internally the endpoint pages through all matching `(scenario, execution)` pairs using an Elasticsearch composite aggregation.\n\n**The `from` and `to` bounds are applied at UTC-day granularity** — only the calendar-day portion of each timestamp is honored. When omitted, the search defaults to the last 7 days, mirroring the other organization scenario-log endpoints.\n","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","maxLength":100,"description":"The free-text expression to match against scenario module IO data. Supports quoted phrases.","example":"\"order_id\":\"12345\""},"teamId":{"type":"integer","description":"Restrict the search to a single team within the organization. When omitted, all teams the authenticated user has access to are searched.","example":27},"from":{"type":"integer","description":"Lower bound of the time window, as a millisecond Unix timestamp.\n\nApplied at **UTC-day granularity**. When both `from` and `to` are omitted, the last 7 days are searched.\n","example":1700000000000},"to":{"type":"integer","description":"Upper bound of the time window, as a millisecond Unix timestamp.\n\nApplied at **UTC-day granularity**.\n","example":1700604800000},"scenarioIds":{"type":"array","description":"Restrict the search to the specified scenario IDs.","items":{"type":"integer"},"example":[1229]},"status":{"type":"array","description":"Which execution outcome's IO data to full-text search. `1` searches successful (`data`) records, `2` searches warning records, and `3` searches error (`err`) records. Multiple values may be combined. Defaults to `[1, 2, 3]` (all outcomes) when omitted.\n","items":{"type":"integer","enum":[1,2,3]},"default":[1,2,3],"example":[1,2,3]}},"required":["query"]},"example":{"query":"\"order_id\":\"12345\"","from":1700000000000,"to":1700604800000,"scenarioIds":[1229]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"totalScenarios":{"type":"integer","description":"The total number of distinct scenarios that produced IO data matching the query."},"totalExecutions":{"type":"integer","description":"The total number of distinct executions that produced IO data matching the query."},"scenarios":{"type":"array","description":"Per-scenario breakdown of matching executions.","items":{"type":"object","properties":{"scenarioId":{"type":"integer","description":"The ID of the scenario."},"executionsCount":{"type":"integer","description":"The number of distinct executions of this scenario that matched the query."}}}}}},"example":{"totalScenarios":2,"totalExecutions":5,"scenarios":[{"scenarioId":1229,"executionsCount":3},{"scenarioId":1542,"executionsCount":2}]}}}}}}},"/organizations/{organizationId}/scenarios/executions/modules/io-data/counts":{"post":{"x-internal":true,"tags":["Organizations"],"summary":"Count executions by module for a full-text query within a scenario","description":"For a single scenario, counts how many distinct executions produced module input/output (IO) data matching a free-text `query`.\n\n**The `from` and `to` bounds are applied at UTC-day granularity** — only the calendar-day portion of each timestamp is honored. When omitted, the search defaults to the last 7 days.\n","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","maxLength":100,"description":"The free-text expression to match against scenario module IO data. Supports quoted phrases.","example":"\"order_id\":\"12345\""},"scenarioId":{"type":"integer","minimum":1,"description":"The ID of the scenario to break down by module.","example":1229},"teamId":{"type":"integer","description":"Restrict the search to a single team within the organization. When omitted, all teams the authenticated user has access to are searched.","example":27},"from":{"type":"integer","description":"Lower bound of the time window, as a millisecond Unix timestamp.\n\nApplied at **UTC-day granularity**. When both `from` and `to` are omitted, the last 7 days are searched.\n","example":1700000000000},"to":{"type":"integer","description":"Upper bound of the time window, as a millisecond Unix timestamp.\n\nApplied at **UTC-day granularity**.\n","example":1700604800000},"status":{"type":"array","description":"Which execution outcome's IO data to full-text search. `1` searches successful (`data`) records, `2` searches warning records, and `3` searches error (`err`) records. Multiple values may be combined. Defaults to `[1, 2, 3]` (all outcomes) when omitted.\n","items":{"type":"integer","enum":[1,2,3]},"default":[1,2,3],"example":[1,2,3]}},"required":["query","scenarioId"]},"example":{"query":"\"order_id\":\"12345\"","scenarioId":1229,"from":1700000000000,"to":1700604800000}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"modules":{"type":"array","description":"Per-module breakdown of matching executions.","items":{"type":"object","properties":{"module":{"type":"string","description":"The module id."},"executionsCount":{"type":"integer","description":"The number of distinct executions of the scenario in which this module produced IO data matching the query."}}}}}},"example":{"modules":[{"module":1,"executionsCount":92},{"module":2,"executionsCount":14}]}}}}}}},"/organizations/{organizationId}/feature-controls":{"get":{"tags":["Organizations"],"summary":"Get organization feature controls","description":"Retrieves all feature controls for the specified organization. Response order of the feature controls is by descending ID.\n","parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11},{"name":"featureControlName","in":"query","description":"The feature control name.","schema":{"type":"string"},"required":false,"example":"Make AI Tools"},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","required":false}],"responses":{"200":{"description":"Successfully retrieved feature controls","content":{"application/json":{"schema":{"type":"object","properties":{"enableAllControlFeatures":{"type":"boolean"},"featureControls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"label":{"type":"object"},"description":{"type":"object"},"tags":{"type":"array","items":{"type":"string"}},"warning_message":{"type":"object"},"enabled":{"type":"boolean"}}}}}},"example":{"enableAllControlFeatures":false,"featureControls":[{"id":2,"name":"Make AI Tools","label":{"en":"Make AI Tools"},"description":{"en":"Access to Make AI Tools"},"tags":["Beta"],"warning_message":{"en":"This feature is in beta."},"enabled":true},{"id":1,"name":"Advanced Security","label":{"en":"Advanced AI Security"},"description":{"en":"Enhanced security features for your organization"},"tags":["AI"],"warning_message":{"en":"This feature uses AI."},"enabled":false}]}}}}}},"patch":{"tags":["Organizations"],"summary":"Patch organization feature controls","description":"Enable or disable feature control for the specified organization.\n","parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the feature control."},"enabled":{"type":"boolean","description":"Indicates whether the feature control is enabled (true) or disabled (false)."}}},"example":{"id":1,"enabled":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"featureControls":{"type":"object","properties":{"id":{"type":"integer"},"enabled":{"type":"boolean"}}}}},"example":{"featureControl":{"id":1,"enabled":true}}}}}}}},"/organizations/{organizationId}/tfa-enforcement":{"patch":{"tags":["Organizations"],"summary":"Set TFA enforcement for an organization","description":"Enables or disables two-factor authentication (TFA) enforcement for the specified organization.\n\nWhen TFA enforcement is enabled, all users in the organization are required to have two-factor authentication configured.\nUsers who do. not have TFA enabled will be automatically logged out.\n\n**Note:** This endpoint is available only for organizations with a plan that supports TFA enforcement.\n","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["enable"],"properties":{"enable":{"type":"boolean","description":"Set to `true` to enable TFA enforcement for the organization, or `false` to disable it."}}},"example":{"enable":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"object","description":"Partial organization object containing the updated TFA enforcement status","properties":{"tfaEnforced":{"type":"boolean","description":"Indicates whether TFA enforcement is enabled for the organization"}}}}},"example":{"organization":{"tfaEnforced":true}}}}},"400":{"description":"Bad request - TFA enforcement feature is not available","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"TFA enforcement is not available.","code":"SC400"}}}},"402":{"description":"Payment required - Upgrade your plan to use TFA enforcement feature","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"For TFA enforcement feature upgrade your plan.","code":"SC402"}}}},"403":{"description":"Forbidden - Insufficient rights to modify organization settings","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Insufficient rights","code":"IM002"}}}}}}},"/organizations/{organizationId}/private-spaces-settings":{"get":{"tags":["Organizations"],"summary":"Get the organization's private-spaces settings","description":"Returns the private-spaces settings for the organization.\n\nWhen the organization has no private-spaces settings configured yet, defaults are returned:\n- `privateSpacesAutoCreationEnabled` defaults to `false`\n- `defaultOperationsLimit` defaults to `1000`\n- `addAdminsAsObservers` defaults to `false`\n\nOnce configured, the stored value is returned as-is — including an explicit `null`, which means **unlimited** operations (distinct from the never-configured default of `1000`).\n","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"privateSpacesSettings":{"type":"object","properties":{"privateSpacesAutoCreationEnabled":{"type":"boolean","description":"When `true`, a private space is automatically created for each new member of the organization."},"defaultOperationsLimit":{"type":"integer","nullable":true,"description":"Default operations limit applied when a private space is auto-created. `null` means unlimited. Defaults to `1000` when never configured."},"addAdminsAsObservers":{"type":"boolean","description":"When `true`, organization admins and the owner are added as `Team Observer` to private spaces. Defaults to `false`."}}}}},"example":{"privateSpacesSettings":{"privateSpacesAutoCreationEnabled":true,"defaultOperationsLimit":10000,"addAdminsAsObservers":true}}}}},"403":{"description":"Forbidden - Insufficient rights to view organization settings","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Access denied.","code":"SC403"}}}},"404":{"description":"Organization not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Organization not found.","code":"IM550"}}}}}},"patch":{"tags":["Organizations"],"summary":"Update the organization's private-spaces settings","description":"Updates the organization's private-spaces settings. All body fields are optional — only the keys provided are written.\n\n### Confirmation requirement\nThe `?confirmed=true` query parameter is required when the request includes any of these bulk operations, otherwise the endpoint responds with `IM004`:\n- `privateSpacesAutoCreationEnabled: true` — **bulk-creates a private space for every eligible organization member** (those holding the `personal team own view` permission) that does not already own one.\n- `privateSpacesAutoCreationEnabled: false` — **also deletes every existing private-space team in the organization.**\n- `addAdminsAsObservers: true` / `false` — **reconciles every existing private-space team**: enabling adds org admins/owner as `Team Observer`; disabling removes those implicit observers.\n- `bulkUpdateExistingLimits: true` — overwrites `limits.operations` on every existing private-space team in the organization to match the `defaultOperationsLimit`, and re-evaluates each team's pause state. `defaultOperationsLimit` **must be provided in the same request** when `bulkUpdateExistingLimits` is `true` (a number, or `null` for unlimited), otherwise the request is rejected with `IM005`. This ensures the value applied org-wide is stated explicitly rather than implicitly inherited from the org's currently stored setting.\n\nChanging `defaultOperationsLimit` alone (to any value, including `null` / `0` / lower) only affects future creations and does NOT require confirmation.\n\n### License requirement\nEnabling `addAdminsAsObservers` requires the organization to hold the `privateSpacesObservability` license parameter. Without it, the request is rejected with `SC402`.\n\n### Owner-only field\n`addAdminsAsObservers` can be changed **only by the organization owner**. Other organization admins may update the remaining settings on this endpoint, but a request that includes `addAdminsAsObservers` (either `true` or `false`) from a non-owner is rejected with `IM002`.\n","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer"},"required":true,"example":11},{"name":"confirmed","in":"query","description":"Required when enabling/disabling auto-creation, toggling admin observers, or bulk-updating existing limits.","schema":{"type":"boolean"},"required":false,"example":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"privateSpacesAutoCreationEnabled":{"type":"boolean","description":"When `true`, new members of the organization automatically get a private space."},"defaultOperationsLimit":{"type":"integer","nullable":true,"minimum":0,"maximum":2000000000,"description":"Default operations limit applied when a private space is auto-created. Pass `null` to set unlimited operations. The maximum matches the highest number of credits an organization can be licensed for."},"bulkUpdateExistingLimits":{"type":"boolean","description":"When `true`, applies `defaultOperationsLimit` to every existing private-space team in the organization. Requires `defaultOperationsLimit` to be provided in the same request (rejected with `IM005` otherwise)."},"addAdminsAsObservers":{"type":"boolean","description":"When `true`, organization admins/owner are added as `Team Observer` to private spaces (and to all existing ones); when `false`, those implicit observers are removed. **Settable by the organization owner only** — a non-owner request including this field is rejected with `IM002`. Enabling requires the `privateSpacesObservability` license (rejected with `SC402` otherwise)."}}},"example":{"privateSpacesAutoCreationEnabled":true,"defaultOperationsLimit":10000,"addAdminsAsObservers":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"privateSpacesSettings":{"type":"object","properties":{"privateSpacesAutoCreationEnabled":{"type":"boolean"},"defaultOperationsLimit":{"type":"integer","nullable":true},"addAdminsAsObservers":{"type":"boolean"}}},"bulkCreatedTeamIds":{"type":"array","items":{"type":"integer"},"description":"IDs of private-space teams created by enabling auto-creation. Empty unless `privateSpacesAutoCreationEnabled` was set to `true`."},"bulkUpdatedTeamIds":{"type":"array","items":{"type":"integer"},"description":"IDs of private-space teams whose limits were overwritten by the bulk update. Empty unless `bulkUpdateExistingLimits` was set."},"bulkDeletedTeamIds":{"type":"array","items":{"type":"integer"},"description":"IDs of private-space teams that were deleted as part of disabling auto-creation. Empty unless `privateSpacesAutoCreationEnabled` was set to `false`."},"observersAddedTeamIds":{"type":"array","items":{"type":"integer"},"description":"IDs of private-space teams that gained admin `Team Observer` memberships. Empty unless `addAdminsAsObservers` was set to `true`."},"observersRemovedTeamIds":{"type":"array","items":{"type":"integer"},"description":"IDs of private-space teams that had admin `Team Observer` memberships removed. Empty unless `addAdminsAsObservers` was set to `false`."}}},"example":{"privateSpacesSettings":{"privateSpacesAutoCreationEnabled":true,"defaultOperationsLimit":10000,"addAdminsAsObservers":true},"bulkCreatedTeamIds":[],"bulkUpdatedTeamIds":[],"bulkDeletedTeamIds":[],"observersAddedTeamIds":[],"observersRemovedTeamIds":[]}}}},"400":{"description":"Bad request - Invalid body","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Validation failed.","code":"SC400"}}}},"402":{"description":"Payment required - The organization lacks the `privateSpacesObservability` license needed to enable admin observers","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Adding admins as observers requires the private spaces observability license.","code":"SC402"}}}},"403":{"description":"Forbidden - Insufficient rights to modify organization settings, or a non-owner attempted to change `addAdminsAsObservers`","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Localized message for the error code. Generic (\"Insufficient rights\") by default; when the `permission_check_verbose_errors` setting is enabled it names the required permission, e.g. `organization permission \"organization manage\" is needed.`"},"code":{"type":"string"}}},"example":{"message":"Insufficient rights","code":"IM002"}}}},"406":{"description":"Confirmation required for a bulk change","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}}},"example":{"message":"Confirmation required to bulk-create, bulk-delete, bulk-update limits, or change admin observers.","code":"IM004","detail":"[{\"type\":\"privateSpacesSettingsDestructive\",\"normalTextFormat\":true}]"}}}}}}},"/organizations/{organizationId}/affiliate-partners":{"get":{"x-internal":true,"tags":["Organizations"],"summary":"List the organization's affiliate partners","description":"Returns the organization's affiliate partners — the members who have joined the affiliate program and can\ntherefore be picked as the affiliate partner earning commission for scenarios shared from the organization\n(the `sharedScenarioPartnerCode` organization attribute).\n\nReturns an empty array when nobody in the organization has joined the affiliate program yet.\n\nAvailable only on zone instances; the affiliate program does not exist on the master instance.\n","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization.","schema":{"type":"integer","minimum":1},"required":true,"example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["affiliatePartners"],"properties":{"affiliatePartners":{"type":"array","items":{"type":"object","required":["partnerCode","name"],"properties":{"partnerCode":{"type":"string","description":"The partner code identifying the affiliate partner. Used as the value of the organization's `sharedScenarioPartnerCode` attribute."},"name":{"type":"string","nullable":true,"description":"The display name of the affiliate partner."}}}}}},"example":{"affiliatePartners":[{"partnerCode":"a1b2c3","name":"Jane Doe"}]}}}},"403":{"description":"Forbidden - the user lacks the organization view permission","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"organization permission \"organization view\" is needed.","code":"IM002"}}}}}}},"/organizations/{organizationId}/check-team-permission":{"get":{"tags":["Organizations"],"summary":"Check team permission within organization","description":"Checks if the current user has a specific team (company) permission on any team within the specified organization.\nReturns `hasPermission: true` if the user has the permission on at least one team in the organization,\notherwise returns `hasPermission: false`.\n","parameters":[{"name":"organizationId","in":"path","description":"The ID of the organization to check permissions within.","schema":{"type":"integer"},"required":true,"example":123},{"name":"teamPermission","in":"query","description":"The name of the team permission to check. This should be a valid company/team permission name\n(e.g., 'scenario add', 'scenario view', 'team view', 'connection add').\n","schema":{"type":"string"},"required":true,"example":"scenario add"}],"responses":{"200":{"description":"Successfully checked permission","content":{"application/json":{"schema":{"type":"object","properties":{"hasPermission":{"type":"boolean","description":"Indicates whether the user has the specified permission on at least one team\nwithin the organization.\n"}}},"examples":{"hasPermission":{"summary":"User has permission","value":{"hasPermission":true}},"noPermission":{"summary":"User does not have permission","value":{"hasPermission":false}}}}}},"400":{"description":"Bad request - missing or invalid teamPermission parameter","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Bad Request","code":"SC400"}}}},"401":{"description":"User is not logged in","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"User is not logged in.","code":"IM015"}}}},"403":{"description":"Access denied - user does not have access to the organization","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Access denied.","code":"SC403"}}}}}}},"/organizations/{organizationId}/managed-organizations":{"get":{"tags":["MMS"],"summary":"List of child organizations","description":"Retrieves the collection of child organizations. If no organization found response will contain empty array in `managedOrganizations` variable.\n\nRefer to the [MMS page](https://help.make.com/make-managed-services-mms) for Make Managed Services (MMS) overview.","security":[{"token":["managed-organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"managedOrganizations":{"type":"array","items":{"type":"object","properties":{"organizationId":{"type":"integer"},"organizationName":{"type":"string"},"operationsAllocated":{"type":"integer"},"countryId":{"type":"integer"},"timezoneId":{"type":"integer"},"zoneId":{"type":"integer"},"zoneDomain":{"type":"string"},"zoneName":{"type":"string"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"example":{"managedOrganizations":[{"organizationId":40,"organizationName":"Your child organization","operationsAllocated":10000,"countryId":1,"timezoneId":113,"zoneId":1,"zoneDomain":"eu1.make.com","zoneName":"EU1"}],"pg":{"sortBy":"name","limit":10000,"sortDir":"asc","offset":0}}}}}}},"post":{"tags":["MMS"],"summary":"Create child organization","description":"A successful response contains information about the new organization and user.\n\nThe endpoint requires `regionId` and `countryId` in the request body. The `regionId` can be retrieved from the GET `/enums/imt-regions` endpoint, and the `countryId` can be found in GET `/enums/countries`.\n\nThe `operations` parameter must be a multiple of 10000. The user name can be an existing user or an external contact without a Make account yet.\n\nRefer to the [MMS page](https://help.make.com/make-managed-services-mms) for Make Managed Services (MMS) overview.","security":[{"token":["managed-organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"userEmail":{"type":"string","format":"email"},"userName":{"type":"string"},"organizationName":{"type":"string"},"regionId":{"type":"integer"},"countryId":{"type":"integer"},"operations":{"type":"integer"}}},"example":{"userEmail":"example@make.com","userName":"John Doe","organizationName":"Your child organization","regionId":1,"countryId":1,"operations":10000}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"integer"},"userEmail":{"type":"string","format":"email"},"userName":{"type":"string"},"userLanguage":{"type":"string"},"userExisted":{"type":"integer"},"childOrganizationId":{"type":"integer"},"newParentOperations":{"type":"integer"},"domain":{"type":"string"}}},"example":{"userId":123,"userEmail":"example@make.com","userName":"John Doe","userLanguage":"en","userExisted":true,"childOrganizationId":123,"newParentOperations":10000,"domain":"eu1.make.com"}}}}}}},"/organizations/{organizationId}/managed-organizations-consumption":{"get":{"tags":["MMS"],"summary":"List of child organizations consumption","description":"Retrieves the collection of child organizations with consumption of opertaions/credits. If no organization found response will contain empty array in `managedOrganizationsConsumption` variable.\n\nRefer to the [MMS page](https://help.make.com/make-managed-services-mms) for Make Managed Services (MMS) overview.","security":[{"token":["managed-organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"managedOrganizationsConsumption":{"type":"array","items":{"type":"object","properties":{"organizationId":{"type":"integer"},"centicreditsConsumed":{"type":"string"},"centicreditsExtra":{"type":"string"},"operationsConsumed":{"type":"number"},"operationsExtra":{"type":"number"},"transferConsumed":{"type":"number"},"transferExtra":{"type":"number"},"lastReset":{"type":"string","format":"date-time"}}}}}},"example":{"managedOrganizationsConsumption":[{"organizationId":40,"centicreditsConsumed":"12345","centicreditsExtra":"12345","operationsConsumed":12345,"operationsExtra":12345,"transferConsumed":"12345","transferExtra":"12345"}]}}}}}}},"/organizations/{organizationId}/managed-organizations/{childOrganizationId}":{"patch":{"tags":["MMS"],"summary":"Update allocation of a child organization operations","description":"A successful response contains summary of new operation limits for parent and child organization.\n\nThe `operations` parameter must be a multiple of 10000.\n\nRefer to the [MMS page](https://help.make.com/make-managed-services-mms) for Make Managed Services (MMS) overview.","security":[{"token":["managed-organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11},{"name":"childOrganizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the child organization.","example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"operations":{"type":"integer"}}},"example":{"operations":10000}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"newParentOperations":{"type":"integer"},"newChildOperations":{"type":"integer"},"operationsDiff":{"type":"integer"},"limitIncreased":{"type":"boolean"}}},"example":{"newParentOperations":20000,"newChildOperations":10000,"operationsDiff":10000,"limitIncreased":true}}}}}}},"/rpcs/{appName}/{appVersion}/{rpcName}":{"post":{"tags":["Remote procedures"],"summary":"Call RPC","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object"},"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"required":{"type":"boolean"}}}}}},"example":{"data":{"id":"1","jidlo":"Černá zabijačková"},"schema":[{"name":"id","type":"integer","required":true},{"name":"jidlo","type":"text","required":true}]}}}},"responses":{"200":{"description":"Successful response"}},"parameters":[{"name":"appName","in":"path","schema":{"type":"string"},"required":true},{"name":"appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"rpcName","in":"path","schema":{"type":"string"},"required":true},{"name":"teamId","in":"query","schema":{"type":"integer","minimum":1},"required":false,"description":"Optional authorized Team context made available to the RPC. Calls without a Team remain valid. Rejected with a 400 if present but not a positive integer.","example":42},{"name":"imt-remote-formula","in":"header","schema":{"type":"integer"},"example":"1"},{"name":"imt-ignore-required","in":"header","schema":{"type":"string"},"example":"yes"},{"name":"imt-validate-schema","in":"header","schema":{"type":"string"},"example":"yes"}]},"options":{"tags":["Remote procedures"],"summary":"Process action","parameters":[{"name":"appName","in":"path","schema":{"type":"string"},"required":true},{"name":"appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"rpcName","in":"path","schema":{"type":"string"},"required":true},{"name":"imt-remote-formula","in":"header","schema":{"type":"integer"},"example":"1"},{"name":"imt-ignore-required","in":"header","schema":{"type":"string"},"example":"yes"},{"name":"imt-validate-schema","in":"header","schema":{"type":"string"},"example":"yes"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"config":{"type":"array","items":{}}}},"examples":{"process-action":{"summary":"Process action","value":{"config":[]}}}}}}}}},"/scenarios":{"get":{"tags":["Scenarios"],"summary":"List scenarios","description":"Retrieves a collection of all scenarios for a team or an organization with a given ID. Returned scenarios are sorted by proprietary setting in descending order.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The unique ID of the team whose scenarios will be retrieved. If this parameter is set, the `organizationId` parameter must be skipped. For each request either `teamId` or `organizationId` must be defined.","name":"teamId","in":"query","schema":{"type":"integer"},"example":1,"required":true},{"description":"The unique ID of the organization whose scenarios will be retrieved. If this parameter is set, the `teamId` parameter must be skipped. For each request either `teamId` or `organizationId` must be defined.","name":"organizationId","in":"query","schema":{"type":"integer"},"example":11},{"name":"id[]","in":"query","schema":{"type":"array","items":{"type":"integer"}},"description":"The array of IDs of scenarios to retrieve.","example":[1,2,3]},{"description":"The unique ID of the folder containing scenarios you want to retrieve. By default, only scenarios directly assigned to this folder are returned.","name":"folderId","in":"query","schema":{"type":"integer"},"example":1},{"name":"includeSubfolders","in":"query","schema":{"type":"boolean"},"description":"When set to `true` with `folderId`, also returns scenarios assigned to descendant folders up to the scenario folder nesting limit."},{"name":"labelIds[]","in":"query","schema":{"type":"array","items":{"type":"integer","minimum":0}},"description":"Returns scenarios carrying any of the given labels (OR semantics) — a scenario is included\nif it has at least one of the listed labels. Composes with other filters (e.g. `folderId`,\n`name`) using AND. Omit this parameter, or pass an empty array, to skip label filtering.\nIgnored when `deleted` is set to `true`.\n","example":[1,2]},{"name":"isActive","in":"query","schema":{"type":"boolean"},"description":"Set this parameter to `true` to get only active scenarios in the response.\n","example":true},{"name":"islinked","in":"query","schema":{"type":"boolean"},"deprecated":true,"description":"This parameter is deprecated. Use the `isActive` parameter to filter for active scenarios instead.\n","example":true},{"name":"concept","in":"query","schema":{"type":"boolean"},"description":"If set to `true`, the response contains only scenario concepts.","example":true},{"name":"type","in":"query","schema":{"type":"string","enum":["scenario","tool"]},"description":"Limits the type of scenarios to be retrieved.","example":"scenario"},{"name":"deleted","in":"query","schema":{"type":"boolean"},"description":"Set this parameter to `true` to list scenarios currently in the trash — scenarios that\nwere deleted and are still within the 30-day recovery window. When omitted (the default),\ndeleted scenarios are excluded from the response.\n","example":true},{"name":"name","in":"query","schema":{"type":"string"},"description":"Filters scenarios by name using a case-insensitive substring match.","example":"My scenario"},{"name":"search","in":"query","schema":{"type":"string"},"description":"Searches scenario names using a case-insensitive literal substring match. An empty value is treated as omitted. A positive integer, optionally surrounded by spaces, also matches the scenario with that exact ID; the original untrimmed value remains the name substring. A blank-only value therefore searches names for those spaces and does not match by ID. Partial, signed, decimal, leading-zero, and out-of-range IDs do not match by ID.","examples":{"default":{"value":"925"}}},{"name":"isinvalid","in":"query","schema":{"type":"boolean"},"description":"Set to `true` to return only invalid scenarios (those whose blueprint failed validation), or `false` to return only valid ones.","example":true},{"name":"islocked","in":"query","schema":{"type":"boolean"},"description":"Set to `true` to return only locked scenarios, or `false` to return only unlocked ones.","example":true},{"name":"createdByUserName","in":"query","schema":{"type":"string"},"description":"Filters scenarios by the name of the user who created them.","example":"John Doe"},{"name":"updatedByUserName","in":"query","schema":{"type":"string"},"description":"Filters scenarios by the name of the user who last updated them.","example":"John Doe"},{"name":"dlqCount","in":"query","schema":{"type":"integer","minimum":0},"description":"Filters scenarios by their number of unresolved incomplete executions.","example":0},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","hookId","devices","deviceId","deviceScope","description","folderId","concept","folderPath","isinvalid","islinked","isActive","islocked","isPaused","usedPackages","usedModules","lastEdit","scheduling","iswaiting","dlqCount","allDlqCount","chainingRole","isShared","type","createdByUser","updatedByUser","created","nextExec","operations","centicredits","transfer","executions","errors","customProperties","templateMetadata","deleted","deletedAt","labels"]}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The number of entities you want to skip before getting entities you want."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"The maximum number of entities you want to get in the response."},{"schema":{"type":"string","enum":["proprietal","id","name","teamId","folderId","isActive","islinked","isinvalid","islocked","lastEdit","createdByUserName","updatedByUserName","created","dlqCount","operations","executions","centicredits","transfer","errors"],"default":"proprietal"},"description":"The value that will be used to sort returned entities by.","name":"pg[sortBy]","in":"query"},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."}],"responses":{"200":{"description":"Retrieved scenarios","content":{"application/json":{"schema":{"type":"object","properties":{"scenarios":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"hookId":{"type":"integer"},"devices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"scope":{"type":"string"}}}},"deviceId":{"type":"integer","deprecated":true},"deviceScope":{"type":"string","deprecated":true},"description":{"type":"string"},"folderId":{"type":"integer","nullable":true},"concept":{"type":"boolean","description":"Whether the scenario is a concept (a work-in-progress scenario that has never been activated)."},"folderPath":{"type":"string","nullable":true,"description":"Slash-separated folder path for the scenario, for example `CRM/cleanup`."},"isinvalid":{"type":"boolean"},"islinked":{"type":"boolean","deprecated":true},"isActive":{"type":"boolean"},"islocked":{"type":"boolean"},"isPaused":{"type":"boolean"},"usedPackages":{"type":"array","items":{"type":"string"}},"usedModules":{"type":"array","description":"The apps and modules used in the scenario.","items":{"type":"object","properties":{"packageName":{"type":"string"},"moduleName":{"type":"string"}}}},"lastEdit":{"type":"string","format":"date-time"},"scheduling":{"type":"object","properties":{"type":{"type":"string"},"interval":{"type":"integer"}}},"iswaiting":{"type":"boolean"},"dlqCount":{"type":"integer","description":"The number of unresolved incomplete executions of the scenario."},"allDlqCount":{"type":"integer","description":"The total number of incomplete executions of the scenario, including resolved ones."},"createdByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"updatedByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"nextExec":{"type":"string","format":"date-time"},"created":{"type":"string","format":"date-time"},"scenarioVersion":{"type":"integer"},"moduleSequenceId":{"type":"integer"},"type":{"type":"string","enum":["scenario","tool"]},"chainingRole":{"type":"string","nullable":true,"description":"The scenario's role in a scenario chain (for example when it is triggered by another scenario), or `null` when the scenario is not part of a chain."},"isShared":{"type":"boolean","description":"Whether the scenario is shared."},"operations":{"type":"integer","description":"The number of operations consumed by the scenario in the reported period."},"centicredits":{"type":"integer","description":"The number of centicredits consumed by the scenario in the reported period."},"transfer":{"type":"integer","description":"The amount of data transferred by the scenario in the reported period, in bytes."},"executions":{"type":"integer","description":"The number of times the scenario was executed in the reported period. Returned only when requested via `cols[]`."},"errors":{"type":"integer","description":"The number of failed executions of the scenario in the reported period. Returned only when requested via `cols[]`."},"customProperties":{"type":"object","nullable":true,"additionalProperties":{},"description":"The scenario's custom-property values keyed by property name, or `null` when custom properties are not included in the organization's license. Returned only when requested via `cols[]`."},"templateMetadata":{"type":"object","nullable":true,"description":"Metadata linking the scenario to the template it was created from, or `null` when the scenario was not created from a template. Returned only when requested via `cols[]`.","properties":{"isOem":{"type":"boolean"},"versionId":{"type":"integer"},"metadataId":{"type":"integer"},"instantiableId":{"type":"integer"}}},"deleted":{"type":"boolean","description":"Whether the scenario is currently soft-deleted (in the trash). Returned only when requested via `cols[]`."},"deletedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the scenario was moved to the trash, or `null` if it is not deleted. Returned only when requested via `cols[]`."},"labels":{"type":"array","description":"Team labels assigned to the scenario, sorted by label name case-insensitively. Available when scenario labels are enabled: the scenario list endpoint returns them by default, while the scenario detail endpoint returns them only when requested via `cols[]`.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"colour":{"type":"string","description":"Fixed palette semantic token name; the UI maps each token to its hex value.","enum":["white","neutral","brand","info","success","warning","danger","pink"]},"scope":{"type":"string","description":"Label visibility tier exposed by the web API. Only team labels are supported in this version.","enum":["team"]},"teamId":{"type":"integer","description":"The team (company) that owns the label."},"description":{"type":"string","nullable":true},"createdBy":{"type":"integer","nullable":true},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time","nullable":true}}}}}}},"pg":{"type":"object","properties":{"last":{"type":"string","description":"Shown only when using the `last` based pagination."},"showLast":{"type":"boolean","description":"Shown only when using the `last` based pagination."},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer","description":"Shown only when using the `offset` based pagination."}}}}},"examples":{"list":{"summary":"A page of scenarios","value":{"scenarios":[{"id":925,"name":"New scenario","teamId":215,"hookId":null,"devices":[],"deviceId":null,"deviceScope":null,"concept":false,"description":"","folderId":null,"isinvalid":false,"islinked":false,"isActive":false,"islocked":false,"isPaused":false,"usedPackages":["json"],"usedModules":[{"packageName":"json","moduleName":"ParseJSON"}],"lastEdit":"2021-09-22T06:40:56.692Z","scheduling":{"type":"indefinitely","interval":900},"iswaiting":false,"dlqCount":0,"allDlqCount":0,"createdByUser":{"id":985,"name":"John Doe","email":"j.doe@example.com"},"updatedByUser":{"id":986,"name":"John Foo","email":"j.foo@example.com"},"nextExec":"2021-09-22T06:41:56.692Z","created":"2021-10-22T06:41:56.692Z","type":"scenario","chainingRole":null,"isShared":false,"operations":1200,"centicredits":34,"transfer":8192,"labels":[{"id":42,"name":"Acme","colour":"brand","scope":"team","teamId":215,"description":"Acme client work","createdBy":985,"created":"2026-06-24T08:00:00.000Z","updated":null}]}],"pg":{"sortBy":"id","sortDir":"desc","offset":0,"limit":10}}}}}}}}},"post":{"tags":["Scenarios"],"summary":"Create scenario","description":"Creates a new scenario with data passed in the request body. In the response, it returns the details of the created scenario. The blueprint is not returned; retrieve it separately via the Get scenario blueprint endpoint.","security":[{"token":["scenarios:write"]}],"parameters":[{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","hookId","devices","deviceId","deviceScope","description","folderId","concept","folderPath","isinvalid","islinked","isActive","islocked","isPaused","usedPackages","usedModules","lastEdit","scheduling","iswaiting","dlqCount","allDlqCount","chainingRole","isShared","type","createdByUser","updatedByUser","created","nextExec","operations","centicredits","transfer","executions","errors","customProperties","templateMetadata","deleted","deletedAt","labels"]}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"},{"description":"If set to `true` this parameter confirms the scenario creation when the scenario contains the app that is used in the organization for the first time and needs installation. If the parameter is missing or it is set to `false` an error code is returned and the scenario is not created.","name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"blueprint":{"type":"string","description":"The scenario blueprint. To save resources, the blueprint is sent as a string, not as an object."},"teamId":{"type":"integer","description":"The unique ID of the team in which the scenario will be created."},"scheduling":{"type":"string","description":"The scenario scheduling details. To save resources, the scheduling details are sent as a string, not as an object."},"folderId":{"type":"integer","description":"The unique ID of the folder in which you want to store created scenario."},"basedon":{"type":"integer","description":"Defines if the scenario is created based on a template. The value is the template ID."},"description":{"type":"string","description":"A description of the scenario."},"metadata":{"type":"object","description":"Additional scenario metadata. Used to declare the scenario's input and output interface and, optionally, the template it is instantiated from.","properties":{"input_spec":{"type":"array","description":"The scenario's input interface definition. Each item declares one input field.","items":{"type":"object"}},"output_spec":{"type":"array","description":"The scenario's output interface definition. Each item declares one output field.","items":{"type":"object"}},"template_metadata":{"type":"object","description":"Metadata linking the created scenario to the template it is instantiated from."}}}},"required":["blueprint","teamId","scheduling"]},"examples":{"create":{"summary":"Blueprint for scenario creation","value":{"blueprint":"{ \"name\": \"Empty integration\", \"flow\": [ { \"id\": 2, \"module\": \"json:ParseJSON\", \"version\": 1, \"metadata\": { \"designer\": { \"x\": -46, \"y\": 47, \"messages\": [ { \"category\": \"last\", \"severity\": \"warning\", \"message\": \"A transformer should not be the last module in the route.\" } ] } } } ], \"metadata\": { \"version\": 1, \"scenario\": { \"roundtrips\": 1, \"maxErrors\": 3, \"autoCommit\": true, \"autoCommitTriggerLast\": true, \"sequential\": false, \"confidential\": false, \"dataloss\": false, \"dlq\": false, \"freshVariables\": false }, \"designer\": { \"orphans\": [ ] } } }","teamId":1,"scheduling":"{ \"type\": \"indefinitely\", \"interval\": 900 }","folderId":1,"basedon":20}}}}}},"responses":{"200":{"description":"Scenario created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"scenario":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"hookId":{"type":"integer"},"devices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"scope":{"type":"string"}}}},"deviceId":{"type":"integer","deprecated":true},"deviceScope":{"type":"string","deprecated":true},"description":{"type":"string"},"folderId":{"type":"integer","nullable":true},"concept":{"type":"boolean","description":"Whether the scenario is a concept (a work-in-progress scenario that has never been activated)."},"folderPath":{"type":"string","nullable":true,"description":"Slash-separated folder path for the scenario, for example `CRM/cleanup`."},"isinvalid":{"type":"boolean"},"islinked":{"type":"boolean","deprecated":true},"isActive":{"type":"boolean"},"islocked":{"type":"boolean"},"isPaused":{"type":"boolean"},"usedPackages":{"type":"array","items":{"type":"string"}},"usedModules":{"type":"array","description":"The apps and modules used in the scenario.","items":{"type":"object","properties":{"packageName":{"type":"string"},"moduleName":{"type":"string"}}}},"lastEdit":{"type":"string","format":"date-time"},"scheduling":{"type":"object","properties":{"type":{"type":"string"},"interval":{"type":"integer"}}},"iswaiting":{"type":"boolean"},"dlqCount":{"type":"integer","description":"The number of unresolved incomplete executions of the scenario."},"allDlqCount":{"type":"integer","description":"The total number of incomplete executions of the scenario, including resolved ones."},"createdByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"updatedByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"nextExec":{"type":"string","format":"date-time"},"created":{"type":"string","format":"date-time"},"scenarioVersion":{"type":"integer"},"moduleSequenceId":{"type":"integer"},"type":{"type":"string","enum":["scenario","tool"]},"chainingRole":{"type":"string","nullable":true,"description":"The scenario's role in a scenario chain (for example when it is triggered by another scenario), or `null` when the scenario is not part of a chain."},"isShared":{"type":"boolean","description":"Whether the scenario is shared."},"operations":{"type":"integer","description":"The number of operations consumed by the scenario in the reported period."},"centicredits":{"type":"integer","description":"The number of centicredits consumed by the scenario in the reported period."},"transfer":{"type":"integer","description":"The amount of data transferred by the scenario in the reported period, in bytes."},"executions":{"type":"integer","description":"The number of times the scenario was executed in the reported period. Returned only when requested via `cols[]`."},"errors":{"type":"integer","description":"The number of failed executions of the scenario in the reported period. Returned only when requested via `cols[]`."},"customProperties":{"type":"object","nullable":true,"additionalProperties":{},"description":"The scenario's custom-property values keyed by property name, or `null` when custom properties are not included in the organization's license. Returned only when requested via `cols[]`."},"templateMetadata":{"type":"object","nullable":true,"description":"Metadata linking the scenario to the template it was created from, or `null` when the scenario was not created from a template. Returned only when requested via `cols[]`.","properties":{"isOem":{"type":"boolean"},"versionId":{"type":"integer"},"metadataId":{"type":"integer"},"instantiableId":{"type":"integer"}}},"deleted":{"type":"boolean","description":"Whether the scenario is currently soft-deleted (in the trash). Returned only when requested via `cols[]`."},"deletedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the scenario was moved to the trash, or `null` if it is not deleted. Returned only when requested via `cols[]`."},"labels":{"type":"array","description":"Team labels assigned to the scenario, sorted by label name case-insensitively. Available when scenario labels are enabled: the scenario list endpoint returns them by default, while the scenario detail endpoint returns them only when requested via `cols[]`.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"colour":{"type":"string","description":"Fixed palette semantic token name; the UI maps each token to its hex value.","enum":["white","neutral","brand","info","success","warning","danger","pink"]},"scope":{"type":"string","description":"Label visibility tier exposed by the web API. Only team labels are supported in this version.","enum":["team"]},"teamId":{"type":"integer","description":"The team (company) that owns the label."},"description":{"type":"string","nullable":true},"createdBy":{"type":"integer","nullable":true},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time","nullable":true}}}}}},"scenarioVersion":{"type":"object","description":"The version metadata of the created scenario. Returned only when the created scenario has a version; omitted otherwise.","properties":{"version":{"type":"integer"},"draft":{"type":"boolean"}}}}},"examples":{"create":{"summary":"The created scenario","value":{"scenario":{"id":925,"name":"New scenario","teamId":215,"hookId":null,"devices":[],"deviceId":null,"deviceScope":null,"concept":false,"description":"","folderId":null,"folderPath":null,"isinvalid":false,"islinked":false,"isActive":false,"islocked":false,"isPaused":false,"usedPackages":["json"],"lastEdit":"2021-09-22T06:40:56.692Z","scheduling":{"type":"indefinitely","interval":900},"iswaiting":false,"dlqCount":0,"allDlqCount":0,"createdByUser":{"id":985,"name":"John Doe","email":"j.doe@example.com"},"updatedByUser":{"id":986,"name":"John Foo","email":"j.foo@example.com"},"nextExec":"2021-09-22T06:41:56.692Z","created":"2021-10-22T06:41:56.692Z","type":"scenario","chainingRole":null,"isShared":false}}}}}}},"400":{"description":"An `input_spec` entry defaults to a locked connection or key (`IM022`). A locked entity is not supported as a dynamic connection in this version, for every caller — select the connection in the module instead. Returned only when locked-entities enforcement is enabled for the organization.\n"},"403":{"description":"A module in the blueprint places a locked connection or key the user is not allowed to use (`IM002`, placement guard). Returned only when locked-entities enforcement is enabled for the organization; an untouched frozen module and releasing a locked entity (swapping it out or removing its module) always pass.\n"}}}},"/scenarios/trash/count":{"get":{"tags":["Scenarios"],"summary":"Count scenarios in trash","description":"Returns the number of scenarios currently in the trash for a team — scenarios that were\ndeleted and are still within the 30-day recovery window. Useful for rendering a trash badge\ncount. The count respects the same permissions as listing scenarios.\n","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The unique ID of the team whose trashed scenarios will be counted.","name":"teamId","in":"query","schema":{"type":"integer"},"example":1,"required":true}],"responses":{"200":{"description":"The number of scenarios currently in the trash.","content":{"application/json":{"schema":{"type":"object","properties":{"scenariosTrashedTotal":{"type":"integer"}}},"example":{"scenariosTrashedTotal":3}}}}}}},"/scenarios/move-to-trash":{"post":{"tags":["Scenarios"],"summary":"Move scenarios to trash","description":"Moves up to 1,000 scenarios of one team to the trash in a single request. Each scenario is\nsoft-deleted the same way as `DELETE /scenarios/{scenarioId}`: an active scenario is stopped\nfirst, and the scenario can be restored within the 30-day recovery window. The request is the\nconfirmation, so a scenario that other scenarios use as a subscenario or as a dead-letter queue\nis trashed without the confirmation prompt the single delete returns.\n\nEvery requested id is processed on its own. An id that does not exist, belongs to another team,\nor is already in trash is reported in `rejectedScenarios` with `IM301`; a failure while trashing\none scenario rejects only that scenario with the failure's code. The response is `200` even when\nevery id was rejected. Larger selections must be split into several requests.\n\nRequires the `scenario delete` permission on the team.\n","security":[{"token":["scenarios:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["teamId","scenarioIds"],"additionalProperties":false,"properties":{"teamId":{"type":"integer","format":"int32","minimum":1,"maximum":2147483647,"description":"The team every listed scenario must belong to."},"scenarioIds":{"type":"array","description":"Ids of the scenarios to move to trash. Larger selections must be sent in several requests.","minItems":1,"maxItems":1000,"uniqueItems":true,"items":{"type":"integer","format":"int32","minimum":1,"maximum":2147483647}}}},"examples":{"mixedResults":{"summary":"Trash three scenarios, one of which is already in trash","value":{"teamId":112,"scenarioIds":[1201,1202,1203]}}}}}},"responses":{"200":{"description":"The request was processed; inspect `rejectedScenarios` and `summary` for per-id results.","content":{"application/json":{"schema":{"type":"object","required":["trashedScenarioIds","rejectedScenarios","summary"],"properties":{"trashedScenarioIds":{"type":"array","description":"Ids that were moved to trash by this request.","items":{"type":"integer"}},"rejectedScenarios":{"type":"array","description":"Ids that were not trashed, each with the reason.","items":{"type":"object","required":["scenarioId","code","detail"],"properties":{"scenarioId":{"type":"integer"},"code":{"type":"string","description":"`IM301` when the scenario does not exist, belongs to another team, or is already in trash; otherwise the code of the failure that stopped this one scenario.\n"},"detail":{"type":"string"}}}},"summary":{"type":"object","required":["total","trashed","rejected"],"properties":{"total":{"type":"integer"},"trashed":{"type":"integer"},"rejected":{"type":"integer"}}}}},"examples":{"mixedResults":{"summary":"Two scenarios were trashed, one was rejected","value":{"trashedScenarioIds":[1201,1202],"rejectedScenarios":[{"scenarioId":1203,"code":"IM301","detail":"Scenario does not exist or is already in trash."}],"summary":{"total":3,"trashed":2,"rejected":1}}}}}}},"400":{"description":"The body is invalid (`SC400`: missing team, empty or duplicate ids, more than 1,000 ids; unknown properties are ignored), or scenario trash is not enabled on this environment (`IM903`, returned while the `is_scenarios_trash_enabled` feature flag is off).\n","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"emptyScenarioIds":{"summary":"No scenario ids were supplied","value":{"message":"Bad Request","code":"SC400","suberrors":[{"message":"Expected array length to be greater or equal to 1","name":"ValidationError"}]}}}}}},"401":{"description":"Authentication failed or the token lacks `scenarios:write` (`IM001`).","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"message":"Access denied","code":"IM001","detail":"Required scope: scenarios:write"}}}}}},"403":{"description":"The user does not have the `scenario delete` permission on the team (`IM002`).","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"insufficientRights":{"summary":"The user cannot delete scenarios in the team","value":{"message":"Insufficient rights","code":"IM002","detail":"team permission \"scenario delete\" is needed."}}}}}}}}},"/scenarios/{scenarioId}":{"get":{"tags":["Scenarios"],"summary":"Get scenario details","description":"Retrieves all available properties of a scenario with a given ID. The returned details do not include a scenario blueprint. If you want to get a scenario blueprint, refer to the [Get scenario blueprint](./blueprints/get--scenarios--scenarioid--blueprint.md) endpoint.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","hookId","devices","deviceId","deviceScope","description","folderId","concept","folderPath","isinvalid","islinked","isActive","islocked","isPaused","usedPackages","usedModules","lastEdit","scheduling","iswaiting","dlqCount","allDlqCount","chainingRole","isShared","type","createdByUser","updatedByUser","created","nextExec","operations","centicredits","transfer","executions","errors","customProperties","templateMetadata","deleted","deletedAt","labels"]}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"scenario":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"hookId":{"type":"integer"},"devices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"scope":{"type":"string"}}}},"deviceId":{"type":"integer","deprecated":true},"deviceScope":{"type":"string","deprecated":true},"description":{"type":"string"},"folderId":{"type":"integer","nullable":true},"concept":{"type":"boolean","description":"Whether the scenario is a concept (a work-in-progress scenario that has never been activated)."},"folderPath":{"type":"string","nullable":true,"description":"Slash-separated folder path for the scenario, for example `CRM/cleanup`."},"isinvalid":{"type":"boolean"},"islinked":{"type":"boolean","deprecated":true},"isActive":{"type":"boolean"},"islocked":{"type":"boolean"},"isPaused":{"type":"boolean"},"usedPackages":{"type":"array","items":{"type":"string"}},"usedModules":{"type":"array","description":"The apps and modules used in the scenario.","items":{"type":"object","properties":{"packageName":{"type":"string"},"moduleName":{"type":"string"}}}},"lastEdit":{"type":"string","format":"date-time"},"scheduling":{"type":"object","properties":{"type":{"type":"string"},"interval":{"type":"integer"}}},"iswaiting":{"type":"boolean"},"dlqCount":{"type":"integer","description":"The number of unresolved incomplete executions of the scenario."},"allDlqCount":{"type":"integer","description":"The total number of incomplete executions of the scenario, including resolved ones."},"createdByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"updatedByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"nextExec":{"type":"string","format":"date-time"},"created":{"type":"string","format":"date-time"},"scenarioVersion":{"type":"integer"},"moduleSequenceId":{"type":"integer"},"type":{"type":"string","enum":["scenario","tool"]},"chainingRole":{"type":"string","nullable":true,"description":"The scenario's role in a scenario chain (for example when it is triggered by another scenario), or `null` when the scenario is not part of a chain."},"isShared":{"type":"boolean","description":"Whether the scenario is shared."},"operations":{"type":"integer","description":"The number of operations consumed by the scenario in the reported period."},"centicredits":{"type":"integer","description":"The number of centicredits consumed by the scenario in the reported period."},"transfer":{"type":"integer","description":"The amount of data transferred by the scenario in the reported period, in bytes."},"executions":{"type":"integer","description":"The number of times the scenario was executed in the reported period. Returned only when requested via `cols[]`."},"errors":{"type":"integer","description":"The number of failed executions of the scenario in the reported period. Returned only when requested via `cols[]`."},"customProperties":{"type":"object","nullable":true,"additionalProperties":{},"description":"The scenario's custom-property values keyed by property name, or `null` when custom properties are not included in the organization's license. Returned only when requested via `cols[]`."},"templateMetadata":{"type":"object","nullable":true,"description":"Metadata linking the scenario to the template it was created from, or `null` when the scenario was not created from a template. Returned only when requested via `cols[]`.","properties":{"isOem":{"type":"boolean"},"versionId":{"type":"integer"},"metadataId":{"type":"integer"},"instantiableId":{"type":"integer"}}},"deleted":{"type":"boolean","description":"Whether the scenario is currently soft-deleted (in the trash). Returned only when requested via `cols[]`."},"deletedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the scenario was moved to the trash, or `null` if it is not deleted. Returned only when requested via `cols[]`."},"labels":{"type":"array","description":"Team labels assigned to the scenario, sorted by label name case-insensitively. Available when scenario labels are enabled: the scenario list endpoint returns them by default, while the scenario detail endpoint returns them only when requested via `cols[]`.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"colour":{"type":"string","description":"Fixed palette semantic token name; the UI maps each token to its hex value.","enum":["white","neutral","brand","info","success","warning","danger","pink"]},"scope":{"type":"string","description":"Label visibility tier exposed by the web API. Only team labels are supported in this version.","enum":["team"]},"teamId":{"type":"integer","description":"The team (company) that owns the label."},"description":{"type":"string","nullable":true},"createdBy":{"type":"integer","nullable":true},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time","nullable":true}}}}}}}},"example":{"scenario":{"id":925,"name":"New scenario","teamId":215,"hookId":null,"devices":[],"deviceId":null,"deviceScope":null,"concept":false,"description":"","folderId":null,"folderPath":null,"isinvalid":false,"islinked":false,"isActive":false,"islocked":false,"isPaused":false,"usedPackages":["json"],"lastEdit":"2021-09-22T06:40:56.692Z","scheduling":{"type":"indefinitely","interval":900},"iswaiting":false,"dlqCount":0,"allDlqCount":0,"createdByUser":{"id":985,"name":"John Doe","email":"j.doe@example.com"},"updatedByUser":{"id":986,"name":"John Foo","email":"j.foo@example.com"},"nextExec":"2021-09-22T06:41:56.692Z","created":"2021-10-22T06:41:56.692Z","type":"scenario","chainingRole":null,"isShared":false}}}}}}},"patch":{"tags":["Scenarios"],"summary":"Update scenario","description":"Updates a scenario with a given ID by passing new values in the request body. Any property that is not provided will be left unchanged. In the response, it returns all details of the updated scenario including properties that were not changed.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","hookId","devices","deviceId","deviceScope","description","folderId","concept","folderPath","isinvalid","islinked","isActive","islocked","isPaused","usedPackages","usedModules","lastEdit","scheduling","iswaiting","dlqCount","allDlqCount","chainingRole","isShared","type","createdByUser","updatedByUser","created","nextExec","operations","centicredits","transfer","executions","errors","customProperties","templateMetadata","deleted","deletedAt","labels"]}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"},{"description":"If set to `true` this parameter confirms the scenario update when the scenario contains the app that is used in the organization for the first time and needs installation. If the parameter is missing or it is set to `false` an error code is returned and the scenario is not updated.","name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"blueprint":{"type":"string","description":"The scenario blueprint. To save resources, the blueprint is sent as a string, not as an object."},"scheduling":{"type":"string","description":"The scenario scheduling details. To save resources, the scheduling details are sent as a string, not as an object."},"folderId":{"type":"integer","nullable":true,"description":"The unique ID of the folder to which you want to move the scenario. Set to `null` to remove its folder assignment."},"name":{"type":"string","description":"A new name of the scenario. The name does not need to be unique."},"baseVersion":{"type":"integer","minimum":0,"description":"Optimistic concurrency token: the scenario `version` the submitted blueprint is based on, as returned by `GET /scenarios/{scenarioId}/blueprint` (`response.version`) or by a previous update (`scenarioVersion.version`). When provided and the scenario has been saved since (its current version is higher), the update is rejected with `409` / `SC409` and nothing is changed; the error's `metadata` carries `currentVersion`, `baseVersion`, `lastEdit` and `lastEditedBy`. Omit it to save unconditionally.\n"}}},"examples":{"update":{"summary":"Blueprint for scenario update","value":{"blueprint":"{ \"name\": \"Empty integration\", \"flow\": [ { \"id\": 2, \"module\": \"json:ParseJSON\", \"version\": 1, \"metadata\": { \"designer\": { \"x\": -46, \"y\": 47, \"messages\": [ { \"category\": \"last\", \"severity\": \"warning\", \"message\": \"A transformer should not be the last module in the route.\" } ] } } } ], \"metadata\": { \"version\": 1, \"scenario\": { \"roundtrips\": 1, \"maxErrors\": 3, \"autoCommit\": true, \"autoCommitTriggerLast\": true, \"sequential\": false, \"confidential\": false, \"dataloss\": false, \"dlq\": false, \"freshVariables\": false }, \"designer\": { \"orphans\": [ ] } } }","scheduling":"{ \"type\": \"indefinitely\", \"interval\": 900 }","folderId":1,"name":"My New Integration","baseVersion":12}}}}}},"responses":{"200":{"description":"Scenario was updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"scenario":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"hookId":{"type":"integer"},"devices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"scope":{"type":"string"}}}},"deviceId":{"type":"integer","deprecated":true},"deviceScope":{"type":"string","deprecated":true},"description":{"type":"string"},"folderId":{"type":"integer","nullable":true},"concept":{"type":"boolean","description":"Whether the scenario is a concept (a work-in-progress scenario that has never been activated)."},"folderPath":{"type":"string","nullable":true,"description":"Slash-separated folder path for the scenario, for example `CRM/cleanup`."},"isinvalid":{"type":"boolean"},"islinked":{"type":"boolean","deprecated":true},"isActive":{"type":"boolean"},"islocked":{"type":"boolean"},"isPaused":{"type":"boolean"},"usedPackages":{"type":"array","items":{"type":"string"}},"usedModules":{"type":"array","description":"The apps and modules used in the scenario.","items":{"type":"object","properties":{"packageName":{"type":"string"},"moduleName":{"type":"string"}}}},"lastEdit":{"type":"string","format":"date-time"},"scheduling":{"type":"object","properties":{"type":{"type":"string"},"interval":{"type":"integer"}}},"iswaiting":{"type":"boolean"},"dlqCount":{"type":"integer","description":"The number of unresolved incomplete executions of the scenario."},"allDlqCount":{"type":"integer","description":"The total number of incomplete executions of the scenario, including resolved ones."},"createdByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"updatedByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"nextExec":{"type":"string","format":"date-time"},"created":{"type":"string","format":"date-time"},"scenarioVersion":{"type":"integer"},"moduleSequenceId":{"type":"integer"},"type":{"type":"string","enum":["scenario","tool"]},"chainingRole":{"type":"string","nullable":true,"description":"The scenario's role in a scenario chain (for example when it is triggered by another scenario), or `null` when the scenario is not part of a chain."},"isShared":{"type":"boolean","description":"Whether the scenario is shared."},"operations":{"type":"integer","description":"The number of operations consumed by the scenario in the reported period."},"centicredits":{"type":"integer","description":"The number of centicredits consumed by the scenario in the reported period."},"transfer":{"type":"integer","description":"The amount of data transferred by the scenario in the reported period, in bytes."},"executions":{"type":"integer","description":"The number of times the scenario was executed in the reported period. Returned only when requested via `cols[]`."},"errors":{"type":"integer","description":"The number of failed executions of the scenario in the reported period. Returned only when requested via `cols[]`."},"customProperties":{"type":"object","nullable":true,"additionalProperties":{},"description":"The scenario's custom-property values keyed by property name, or `null` when custom properties are not included in the organization's license. Returned only when requested via `cols[]`."},"templateMetadata":{"type":"object","nullable":true,"description":"Metadata linking the scenario to the template it was created from, or `null` when the scenario was not created from a template. Returned only when requested via `cols[]`.","properties":{"isOem":{"type":"boolean"},"versionId":{"type":"integer"},"metadataId":{"type":"integer"},"instantiableId":{"type":"integer"}}},"deleted":{"type":"boolean","description":"Whether the scenario is currently soft-deleted (in the trash). Returned only when requested via `cols[]`."},"deletedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the scenario was moved to the trash, or `null` if it is not deleted. Returned only when requested via `cols[]`."},"labels":{"type":"array","description":"Team labels assigned to the scenario, sorted by label name case-insensitively. Available when scenario labels are enabled: the scenario list endpoint returns them by default, while the scenario detail endpoint returns them only when requested via `cols[]`.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"colour":{"type":"string","description":"Fixed palette semantic token name; the UI maps each token to its hex value.","enum":["white","neutral","brand","info","success","warning","danger","pink"]},"scope":{"type":"string","description":"Label visibility tier exposed by the web API. Only team labels are supported in this version.","enum":["team"]},"teamId":{"type":"integer","description":"The team (company) that owns the label."},"description":{"type":"string","nullable":true},"createdBy":{"type":"integer","nullable":true},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time","nullable":true}}}}}},"scenarioVersion":{"type":"object","description":"The scenario version this update created. Present only when the update changed the blueprint or its metadata; an update that stored nothing new (identical blueprint, or scheduling/name only) has no `scenarioVersion` and the scenario's version is unchanged. Send `version` back as `baseVersion` on the next update to detect concurrent saves.\n","properties":{"scenarioId":{"type":"integer"},"version":{"type":"integer"},"draft":{"type":"boolean","description":"Whether the version is a draft (teams with scenario drafts enabled) or published."}}}}},"example":{"scenario":{"id":925,"name":"New scenario","teamId":215,"hookId":null,"devices":[],"deviceId":null,"deviceScope":null,"concept":false,"description":"","folderId":null,"folderPath":null,"isinvalid":false,"islinked":false,"isActive":false,"islocked":false,"isPaused":false,"usedPackages":["json"],"lastEdit":"2021-09-22T06:40:56.692Z","scheduling":{"type":"indefinitely","interval":900},"iswaiting":false,"dlqCount":0,"allDlqCount":0,"createdByUser":{"id":985,"name":"John Doe","email":"j.doe@example.com"},"updatedByUser":{"id":986,"name":"John Foo","email":"j.foo@example.com"},"nextExec":"2021-09-22T06:41:56.692Z","created":"2021-10-22T06:41:56.692Z","type":"scenario","chainingRole":null,"isShared":false},"scenarioVersion":{"scenarioId":925,"version":13,"draft":false}}}}},"400":{"description":"An `input_spec` entry defaults to a locked connection or key (`IM022`). A locked entity is not supported as a dynamic connection in this version, for every caller — select the connection in the module instead. Returned only when locked-entities enforcement is enabled for the organization.\n"},"403":{"description":"A module in the blueprint places a locked connection or key the user is not allowed to use (`IM002`, placement guard). Returned only when locked-entities enforcement is enabled for the organization; an untouched frozen module and releasing a locked entity (swapping it out or removing its module) always pass.\n"},"409":{"description":"`SC409` — the save was not applied. Either the request carried `baseVersion` and the scenario has a newer version (saved by another client such as the Make MCP server, or another editor session); the response `metadata` then contains `reason: scenario_version_conflict`, `baseVersion`, `currentVersion`, `lastEdit` and `lastEditedBy` (`{ id, name, email }` or `null`) so the client can reload the current blueprint or retry without `baseVersion` to overwrite. Or the scenario was modified concurrently between the placement-guard check and the save; retry the request.\n","content":{"application/json":{"example":{"code":"SC409","message":"Scenario has been modified since version 12 was loaded, current version is 13.","metadata":{"reason":"scenario_version_conflict","baseVersion":12,"currentVersion":13,"lastEdit":"2026-09-21T14:03:11.482619+00:00","lastEditedBy":{"id":42,"name":"Jane Doe","email":"jane.doe@example.com"}}}}}}}},"delete":{"tags":["Scenarios"],"summary":"Delete scenario","description":"Deletes a scenario with a given ID and returns the ID in the response.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"responses":{"200":{"description":"Scenario deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"scenario":{"type":"integer"}}},"example":{"scenario":1399}}}}}}},"/scenarios/{scenarioId}/triggers":{"get":{"tags":["Scenarios"],"summary":"Get trigger details","description":"Retrieves properties of a trigger included in a scenario with a given ID. A trigger is a module that is able to return bundles that were newly added or updated (depending on the settings) since the last run of the scenario. An example of a trigger is a hook.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"udid":{"type":"string"},"scope":{"type":"string"},"queueCount":{"type":"integer"},"queueLimit":{"type":"integer"},"typeName":{"type":"string"},"type":{"type":"string"},"url":{"type":"string","format":"uri"},"flags":{"type":"object"}}},"example":{"id":9765,"name":"WH1","udid":"e7cq6zty4qcnq7fb83kzcdsgqniqtd5c","scope":"hook","queueCount":0,"queueLimit":100000,"typeName":"gateway-webhook","type":"web","flags":{},"url":"https://hook.make.com/e7cq6zty4qcnq7fb83kzcdsgqniqtd5c"}}}}}}},"/scenarios/{scenarioId}/clone":{"post":{"tags":["Scenarios"],"summary":"Clone scenario","description":"Clones the specified scenario. The response contains all information about the scenario clone.\n\nYou have to know which app integrations the scenario contains. You can get a list of apps used in the scenario with the API call `GET /scenarios/{scenarioId}` in the `usedPackages` array.\n\nIf you are cloning the scenario to a different team and the scenario contains an app module, webhook or data store, you have to either:\n\n- map the entity ID to a different entity with the correct properties. For example, you can map an app module connection to a different connection of the same app with the same scopes, or\n - use the `notAnalyze` query parameter to turn off the scenario clone blueprint analysis.\n\nWhen you turn off the scenario blueprint analysis you can map the entity ID to the `null` value, which omits the entity settings.\n\nThe scenario blueprint analysis makes sure that the scenario clone will work without further changes. If you turn off the scenario blueprint analysis, check the configuration of all entities in the scenario clone.\n\nIf you are cloning the scenario to a different team and the scenario contains a custom app or a custom function, which is not available for the users in the team, use the `confirmed` query parameter to confirm cloning of the scenario. Otherwise, you get an error listing the custom function that you have to create in the team.\n\nRefer to the request body parameters description and examples for more information.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"description":"The ID of the organization.","required":true,"name":"organizationId","in":"query","schema":{"type":"integer"},"example":11},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","hookId","devices","deviceId","deviceScope","description","folderId","concept","folderPath","isinvalid","islinked","isActive","islocked","isPaused","usedPackages","usedModules","lastEdit","scheduling","iswaiting","dlqCount","allDlqCount","chainingRole","isShared","type","createdByUser","updatedByUser","created","nextExec","operations","centicredits","transfer","executions","errors","customProperties","templateMetadata","deleted","deletedAt","labels"]}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"description":"If the scenario contains a custom app or a custom function, that is not available in the team, you have to set the `confirmed` parameter to `true` to clone the scenario. Otherwise you get an error and the scenario is not cloned.","examples":{"suppressBlueprintAnalysis":{"value":true}}},{"examples":{"suppressBlueprintAnalysis":{"value":true}},"name":"notAnalyze","in":"query","schema":{"type":"boolean"},"description":"If you are cloning a scenario to a different team, you have to map the scenario entities (connections, data stores, webhooks, ...) from the original to the clone. If you cannot map all of the scenario entities, set the `notAnalyze` parameter to `true` to suppress the scenario blueprint analysis."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name for the scenario clone. The maximum length of the name is 120 characters."},"teamId":{"type":"integer","description":"The ID of the team to which you want to clone the scenario."},"account":{"description":"Specify pairs of original and clone connection IDs to map connections to the cloned scenario.","type":"object","additionalProperties":{}},"key":{"description":"Specify pairs of original and clone key IDs to map keys to the cloned scenario.","type":"object","additionalProperties":{}},"hook":{"description":"Specify pairs of original and clone hook IDs to map webhooks to the cloned scenario.","type":"object","additionalProperties":{}},"device":{"description":"Specify pairs of original and clone device IDs to map devices to the cloned scenario.","type":"object","additionalProperties":{}},"udt":{"description":"Specify pairs of original and clone data structure IDs to map data structures to the cloned scenario.","type":"object","additionalProperties":{}},"datastore":{"description":"Specify pairs of original and clone data store IDs to map data stores to the cloned scenario.","type":"object","additionalProperties":{}},"states":{"type":"boolean","description":"Set to `true` to clone also states of the scenario modules, for example last scenario trigger execution. Setting to `false` resets the state information of the scenario modules in the scenario clone."}},"required":["name","teamId","states"]},"examples":{"cloneScenario":{"summary":"Clone scenario","description":"Clone the specified scenario to the team with the specified `teamId`.","value":{"name":"Scenario clone","teamId":20030,"states":true,"account":{"4400":5564,"5500":7542},"key":{"4383":465},"hook":{"11899":11900},"device":{"432":116},"udt":{"4130":5698},"datastore":{"3572":4587}}},"suppressBlueprintAnalysis":{"summary":"Suppress validation","description":"Suppress scenario clone blueprint analysis to clone the scenario without mapping the connections, data stores or other scenario entities. \n\nIf you do not map all of the scenario entities to the scenario clone, you will have to edit the scenario manually.","value":{"name":"Scenario clone without connections","teamId":20030,"states":false,"account":{"4400":null,"5500":null},"udt":{"4131":5700},"datastore":{"3573":4900}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"scenario":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"hookId":{"type":"integer"},"devices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"scope":{"type":"string"}}}},"deviceId":{"type":"integer","deprecated":true},"deviceScope":{"type":"string","deprecated":true},"description":{"type":"string"},"folderId":{"type":"integer","nullable":true},"concept":{"type":"boolean","description":"Whether the scenario is a concept (a work-in-progress scenario that has never been activated)."},"folderPath":{"type":"string","nullable":true,"description":"Slash-separated folder path for the scenario, for example `CRM/cleanup`."},"isinvalid":{"type":"boolean"},"islinked":{"type":"boolean","deprecated":true},"isActive":{"type":"boolean"},"islocked":{"type":"boolean"},"isPaused":{"type":"boolean"},"usedPackages":{"type":"array","items":{"type":"string"}},"usedModules":{"type":"array","description":"The apps and modules used in the scenario.","items":{"type":"object","properties":{"packageName":{"type":"string"},"moduleName":{"type":"string"}}}},"lastEdit":{"type":"string","format":"date-time"},"scheduling":{"type":"object","properties":{"type":{"type":"string"},"interval":{"type":"integer"}}},"iswaiting":{"type":"boolean"},"dlqCount":{"type":"integer","description":"The number of unresolved incomplete executions of the scenario."},"allDlqCount":{"type":"integer","description":"The total number of incomplete executions of the scenario, including resolved ones."},"createdByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"updatedByUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"}}},"nextExec":{"type":"string","format":"date-time"},"created":{"type":"string","format":"date-time"},"scenarioVersion":{"type":"integer"},"moduleSequenceId":{"type":"integer"},"type":{"type":"string","enum":["scenario","tool"]},"chainingRole":{"type":"string","nullable":true,"description":"The scenario's role in a scenario chain (for example when it is triggered by another scenario), or `null` when the scenario is not part of a chain."},"isShared":{"type":"boolean","description":"Whether the scenario is shared."},"operations":{"type":"integer","description":"The number of operations consumed by the scenario in the reported period."},"centicredits":{"type":"integer","description":"The number of centicredits consumed by the scenario in the reported period."},"transfer":{"type":"integer","description":"The amount of data transferred by the scenario in the reported period, in bytes."},"executions":{"type":"integer","description":"The number of times the scenario was executed in the reported period. Returned only when requested via `cols[]`."},"errors":{"type":"integer","description":"The number of failed executions of the scenario in the reported period. Returned only when requested via `cols[]`."},"customProperties":{"type":"object","nullable":true,"additionalProperties":{},"description":"The scenario's custom-property values keyed by property name, or `null` when custom properties are not included in the organization's license. Returned only when requested via `cols[]`."},"templateMetadata":{"type":"object","nullable":true,"description":"Metadata linking the scenario to the template it was created from, or `null` when the scenario was not created from a template. Returned only when requested via `cols[]`.","properties":{"isOem":{"type":"boolean"},"versionId":{"type":"integer"},"metadataId":{"type":"integer"},"instantiableId":{"type":"integer"}}},"deleted":{"type":"boolean","description":"Whether the scenario is currently soft-deleted (in the trash). Returned only when requested via `cols[]`."},"deletedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the scenario was moved to the trash, or `null` if it is not deleted. Returned only when requested via `cols[]`."},"labels":{"type":"array","description":"Team labels assigned to the scenario, sorted by label name case-insensitively. Available when scenario labels are enabled: the scenario list endpoint returns them by default, while the scenario detail endpoint returns them only when requested via `cols[]`.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"colour":{"type":"string","description":"Fixed palette semantic token name; the UI maps each token to its hex value.","enum":["white","neutral","brand","info","success","warning","danger","pink"]},"scope":{"type":"string","description":"Label visibility tier exposed by the web API. Only team labels are supported in this version.","enum":["team"]},"teamId":{"type":"integer","description":"The team (company) that owns the label."},"description":{"type":"string","nullable":true},"createdBy":{"type":"integer","nullable":true},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time","nullable":true}}}}}}}},"examples":{"cloneScenario":{"value":{"id":925,"name":"Scenario clone","teamId":20030,"hookId":11900,"deviceId":116,"deviceScope":null,"concept":false,"description":"","folderId":null,"isinvalid":false,"isActive":false,"islinked":false,"islocked":false,"isPaused":false,"usedPackages":["gateway","airtable","datastore","google-sheets","util"],"lastEdit":"2021-09-22T06:40:56.692Z","scheduling":{"type":"indefinitely","interval":900},"iswaiting":false,"dlqCount":0,"createdByUser":{"id":985,"name":"John Doe","email":"j.doe@example.com"},"updatedByUser":{"id":986,"name":"John Foo","email":"j.foo@example.com"},"nextExec":"2021-09-22T06:41:56.692Z"}},"suppressBlueprintAnalysis":{"value":{"id":925,"name":"Scenario clone without connections","teamId":20030,"hookId":null,"deviceId":null,"deviceScope":null,"concept":false,"description":"","folderId":null,"isinvalid":false,"isActive":false,"islinked":false,"islocked":false,"isPaused":false,"usedPackages":["airtable","datastore","google-sheets","util"],"lastEdit":"2021-09-22T06:40:56.692Z","scheduling":{"type":"indefinitely","interval":900},"iswaiting":false,"dlqCount":0,"createdByUser":{"id":985,"name":"John Doe","email":"j.doe@example.com"},"updatedByUser":{"id":986,"name":"John Foo","email":"j.foo@example.com"},"nextExec":"2021-09-22T06:41:56.692Z"}}}}}},"400":{"description":"One of:\n\n- `IM022` — a remapped connection or key is locked in the source team and the\n  request leaves its replacement empty, so the clone would duplicate the locked\n  credential. Copying a locked connection or key is never supported, in any target\n  team including the source team, and is not gated by the locked-entities\n  enforcement flag; pass the ID of an existing connection or key in the target team\n  instead.\n- `SC400` `Missing value of required parameter` — the clone form marks the remap\n  entry of a locked connection or key `required` (as it already does for an OAuth\n  connection) and the request body omits it.\n- `IM022` — the source scenario's `input_spec` defaults to a locked connection or\n  key, which `scenario_duplicate` copies verbatim into the clone. A locked entity is\n  not supported as a dynamic connection in this version, for every caller — select\n  the connection in the module instead. Returned only when locked-entities\n  enforcement is enabled for the organization.\n"},"403":{"description":"The copy would keep (or remap to) a locked connection or key the user is not allowed to use in the target team (`IM002`, placement guard). Returned only when locked-entities enforcement is enabled for the organization; remapping the reference to a usable connection or key passes.\n"}}}},"/scenarios/{scenarioId}/restore":{"post":{"tags":["Scenarios"],"summary":"Restore scenario from trash","description":"Restores a soft-deleted (\"trashed\") scenario with the given ID back to active, as long as it\nis still within the 30-day recovery window. The scenario's runnable state (apps, connections,\nmodules, webhook wiring) is re-derived best-effort from its surviving blueprint; if the\nblueprint references something deleted while the scenario sat in trash, the restore still\nsucceeds and the scenario is flagged with `containsErrors` so it can be fixed by editing.\n\nLocked connections and keys the restoring user is not allowed to use are cleared from the\nrestored blueprint rather than blocking the restore: those modules come back with no connection\nselected, and the scenario is flagged with `containsErrors` because it cannot run until someone\nselects one. Every module cleared this way is listed in `strippedModules` so the caller can tell\nthe user which modules need a new connection; the list is empty when nothing was cleared.\n\nRequires the `scenario edit` permission. Only a scenario that is currently in trash can be\nrestored — an already-active one is rejected with 404, as is a scenario beyond the 30-day\nwindow.\n","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"responses":{"200":{"description":"Scenario restored successfully","content":{"application/json":{"schema":{"type":"object","properties":{"scenario":{"type":"object","properties":{"id":{"type":"integer"},"deleted":{"type":"boolean"},"deletedAt":{"type":"string","format":"date-time","nullable":true},"containsErrors":{"type":"boolean","description":"The restored scenario needs editing before it can run — a reference in its blueprint could not be revived, or a locked connection or key was cleared from it.\n"}}},"strippedModules":{"type":"array","description":"The modules a locked connection or key was cleared from, empty when nothing was cleared. A module listed here has no connection selected until the user picks one.\n","items":{"type":"object","properties":{"moduleId":{"type":"integer","description":"Id of the module within the scenario's blueprint."},"moduleName":{"type":"string","description":"Module identifier, e.g. `google-sheets:addRow`."},"entities":{"type":"array","description":"The locked connections and keys cleared from that module.","items":{"type":"object","properties":{"entityType":{"type":"string","enum":["connection","key"]},"entityId":{"type":"integer"}}}}}}}}},"examples":{"restored-intact":{"summary":"Nothing had to be cleared","value":{"scenario":{"id":1399,"deleted":false,"deletedAt":null,"containsErrors":false},"strippedModules":[]}},"locked-connection-stripped":{"summary":"A locked connection the restorer cannot use was cleared","value":{"scenario":{"id":1399,"deleted":false,"deletedAt":null,"containsErrors":true},"strippedModules":[{"moduleId":2,"moduleName":"google-sheets:addRow","entities":[{"entityType":"connection","entityId":8123}]}]}}}}}},"400":{"description":"`scenarioId` is not a positive integer (`SC400`, the message names the offending path parameter), or scenario trash is not enabled on this environment (`IM903`, returned while the `is_scenarios_trash_enabled` feature flag is off). Also returned for a scenario whose team holds locked connections or keys when the structure of its stored blueprint cannot be parsed (`IM007`), because which locked entities it places — and therefore which of them must be cleared — cannot be determined. The scenario stays in trash. An individual connection or key parameter the blueprint grammar rejects does not fail the restore: it can place no entity, so it is left as it is and the restore continues.\n"},"403":{"description":"The user does not have the `scenario edit` permission for this scenario (`IM002`). Also returned when a locked connection or key the user may not use could not be cleared from the blueprint (`IM002`) — the scenario stays in trash.\n"},"404":{"description":"The scenario does not exist, is not in trash, or is beyond the 30-day restore window (`IM301`). Restoring a scenario that is already active is rejected rather than answered with its current state — there is nothing to restore, so a repeated or double-submitted restore lands here, as does the loser of two concurrent restores.\n"},"409":{"description":"The scenario was modified concurrently between the placement-guard check and the restore (`SC409`). Nothing was restored; retry the request. Returned only when locked-entities enforcement is enabled for the organization, since only then is the restore serialised against other writes to the scenario.\n"},"422":{"description":"Whether the user may use the locked connections and keys the blueprint references could not be determined (`IM016`). The scenario stays in trash — retry the restore.\n"}}}},"/scenarios/{scenarioId}/data":{"put":{"x-internal":true,"tags":["Scenarios"],"summary":"Set module data","description":"**Why the docs are internal:**\nIt's not clear how to use this EP. The example suggest that the EP can only change the trigger epoch.\nBut the EP's SQL routine and original documentation suggest that the EP is supposed to update any module.\nI wasn't able to reproduce that use case even with the simplest modules. Furthermore, the EP always returns successful response, even though it didn't update anything.\nThis causes a lot of confusion and frustration ot the users. So until the usage of the EP is clear the docs should be hidden.\n2023-06-06, agreed with Ondrej Vesely.\n**Original docs:**\nSets the module data for a scenario with a given ID by passing new values in the request body. It replaces the entire resource with the new values. In the response, it returns the confirmation if the scenario was updated.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"requestBody":{"description":"The request body must contain the object with module data that strictly depends on the specific module. Keys in the object are IDs of the modules for which data are going to be set. Values are arbitrary objects that are supplied to the modules.","content":{"application/json":{"schema":{"type":"object"},"example":{"1":{"epoch":{"date":"2021-02-02T09:49:00.000Z"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"updated":{"type":"boolean"}}},"example":{"updated":true}}}}}}},"/scenarios/{scenarioId}/data/{moduleId}":{"get":{"tags":["Scenarios"],"summary":"Check module data","description":"Verifies whether the module data is set or not. This endpoint doesn't retrieve the module data.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"description":"The unique ID of the scenario module. It is available in the scenario blueprint that can be retrieved from the [Get scenario blueprint](/api-reference/scenarios/blueprint/get--scenarios--scenarioid--blueprint.md) endpoint.","name":"moduleId","in":"path","schema":{"type":"integer"},"example":1,"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"exists":{"type":"boolean"}}},"example":{"exists":true}}}}}}},"/scenarios/{scenarioId}/start":{"post":{"tags":["Scenarios"],"summary":"Activate scenario","description":"Activates the specified scenario. Also runs the scenario if the scenario is scheduled to run at regular intervals. Read more about [scenario scheduling](https://www.make.com/en/help/scenarios/scheduling-a-scenario).\n\nThe API call response contains the scenario ID and the scenario `isActive` property set to `true`.\n","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"scenario":{"type":"object","properties":{"id":{"type":"integer"},"isActive":{"type":"boolean"},"islinked":{"type":"boolean","deprecated":true}}}}},"example":{"scenario":{"id":5,"isActive":true,"islinked":true}}}}}}}},"/scenarios/{scenarioId}/stop":{"post":{"tags":["Scenarios"],"summary":"Deactivate scenario","description":"Deactivates and stops the specified scenario if the scenario is running. The API call response contains the scenario ID and the scenario `isActive` property set to `false`.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"scenario":{"type":"object","properties":{"id":{"type":"integer"},"isActive":{"type":"boolean"},"islinked":{"type":"boolean","deprecated":true}}}}},"example":{"scenario":{"id":5,"isActive":false,"islinked":false}}}}}}}},"/scenarios/{scenarioId}/run":{"post":{"tags":["Scenarios"],"summary":"Run a scenario","description":"Runs the specified scenario. The scenario has to be active. If your scenario has required scenario inputs you have to provide the scenario inputs in the request body. If the scenario provides scenario outputs, these are returned in the response.\n\nThe scenario is not run when its organization or team is paused because an operations or data transfer limit was exceeded. In that case the call returns `429` with the code `IM310`, the same way Make stops scheduling the organization's scenarios.\n\n**Note:** [Organization request limits](https://developers.make.com/api-documentation/getting-started/rate-limiting) do **not** apply for this endpoint.\n","security":[{"token":["scenarios:read","scenarios:write","scenarios:run"]}],"parameters":[{"name":"scenarioId","in":"path","schema":{"type":"integer"},"description":"The ID of the scenario. Get the ID of the scenario with the API call `GET /scenarios`.","example":111,"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"If your scenario has inputs specify the input parameters and values in the `data` object."},"responsive":{"type":"boolean","description":"If set to `true` the Make API waits until the scenario finishes. The response contains the scenario `status` and `executionId`. If the scenario execution takes longer than 40 seconds, the API call returns the time out error, but the scenario is still executed.\n\nIf set to `false` the API call returns immediately without waiting. The response contains only the `executionId`.","default":false},"callbackUrl":{"type":"string","description":"Url that will be called once the scenario execution finishes. If the run is responsive and finishes within 40 seconds, the url is not called since the result is present in the response. \n\nThe `callbackUrl` will be called using a `POST` request with the following body:\n\n{\n \"executionId\": `executionId`,\n \"statusUrl\": \"url to retrieve execution status and outputs via GET\"\n }\n "}}},"example":{"data":{"Test input":"Test value","My array":["test 1","test 2"],"My collection":{"key":"value"}},"responsive":false,"callbackUrl":"https://example.com/callback"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"executionId":{"type":"string","description":"ID of the scenario execution."},"status":{"type":"string","description":"Status of the scenario execution:\n\n- `1`: success\n - `2`: warning\n - `3`: error."}}},"examples":{"nonResponsive":{"summary":"Non-responsive","value":{"executionId":"9c4874979d974c3ebdef1e8aaa7dc452"}},"responsiveWithin40s":{"summary":"Responsive run that finished within 40 seconds","value":{"executionId":"9c4874979d974c3ebdef1e8aaa7dc452","status":"1","outputs":{"output1":"text output","output2":123}}},"responsiveErrorWithin40s":{"summary":"Responsive unsuccessful run that finished within 40 seconds","value":{"executionId":"9c4874979d974c3ebdef1e8aaa7dc452","status":"3","error":{"message":"An error occurred while executing the scenario.","name":"RuntimeError","causeModule":{"name":"ActionSendData","appName":"http"}}}},"responsiveAfter40s":{"summary":"Responsive run taking longer than 40 seconds","value":{"executionId":"9c4874979d974c3ebdef1e8aaa7dc452"}}}}}},"429":{"description":"The scenario's organization or team is paused because an operations or data transfer limit was exceeded, so no execution was started.\n","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"example":{"code":"IM310","message":"Scenario cannot be run because its organization or team is paused. Resolve the exceeded operations or data transfer limit and try again."}}}}}}},"/scenarios/{scenarioId}/replay":{"post":{"x-internal":false,"tags":["Scenarios"],"summary":"Replay scenario executions","description":"Replays the specified executions of the scenario. Each replay creates a new execution that runs the latest version of the scenario with the data of the original execution. The scenario has to be active, and only executions marked as replayable can be replayed. To replay one execution you can also use `POST /scenarios/{scenarioId}/executions/{executionId}/replay`.\n\nUp to 100 executions can be replayed in one call. The executions are processed one by one in the order of the request, so a call with many executions takes proportionally longer to respond. Executions that cannot be replayed (not found, not replayable, or belonging to another team) are skipped and listed in `failed`; the other executions are still queued. If the organization runs out of execution slots or the replay service becomes unavailable, the remaining executions are not attempted and are listed in `failed` with the same reason.\n\nThe call returns `202` as long as at least one execution was queued. If no execution was queued, the call fails with the error of the first execution, for example `422` when a single execution is not replayable. The response property `executionId` holds the ID of the first queued replay and is kept for backward compatibility; use `replayed` to map each original execution to its replay.\n\nThe scenario is not replayed when its organization or team is paused because an operations or data transfer limit was exceeded. In that case the call returns `429` with the code `IM310`.\n","security":[{"token":["scenarios:run"]}],"parameters":[{"name":"scenarioId","in":"path","schema":{"type":"integer"},"description":"The ID of the scenario. Get the ID of the scenario with the API call `GET /scenarios`.","example":111,"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["executionIds"],"properties":{"executionIds":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"description":"IDs of the executions to replay; unique IDs of executions of the same scenario, at most 100 per call. Get the IDs with the API call `GET /scenarios/{scenarioId}/logs`; only executions marked as replayable can be replayed.","items":{"type":"string","minLength":32,"maxLength":32,"pattern":"^[a-zA-Z0-9]+$"}}}},"examples":{"single":{"summary":"Replay one execution","value":{"executionIds":["509f0457d2804ba7b115faf1637beea6"]}},"multiple":{"summary":"Replay several executions","value":{"executionIds":["509f0457d2804ba7b115faf1637beea6","a07e16f2ad134bf49cf83a00aa95c0a5","d949cee5ac204fddb833041a3b4169cc"]}}}}}},"responses":{"202":{"description":"202 Accepted - at least one execution was queued for replay","content":{"application/json":{"schema":{"type":"object","required":["executionId","replayed","failed"],"properties":{"executionId":{"type":"string","description":"ID of the first replay execution that was queued. Kept for backward compatibility; use `replayed` to map every original execution to its replay."},"replayed":{"type":"array","description":"Executions that were queued for replay, in the order of the request.","items":{"type":"object","required":["executionId","replayExecutionId"],"properties":{"executionId":{"type":"string","description":"ID of the original execution."},"replayExecutionId":{"type":"string","description":"ID of the new execution that replays the original one."}}}},"failed":{"type":"array","description":"Executions that could not be queued, in the order of the request. Empty when every execution was queued.","items":{"type":"object","required":["executionId","code","message"],"properties":{"executionId":{"type":"string","description":"ID of the original execution."},"code":{"type":"string","description":"Error code: `SC404` execution not found, `SC422` execution is not replayable, `SC403` execution belongs to another team, `SC429` no execution slot was available, `SC503` replays are temporarily unavailable."},"message":{"type":"string","description":"Human-readable reason."}}}}}},"examples":{"single":{"summary":"One execution replayed","value":{"executionId":"9c4874979d974c3ebdef1e8aaa7dc452","replayed":[{"executionId":"509f0457d2804ba7b115faf1637beea6","replayExecutionId":"9c4874979d974c3ebdef1e8aaa7dc452"}],"failed":[]}},"partialFailure":{"summary":"Some executions could not be replayed","value":{"executionId":"9c4874979d974c3ebdef1e8aaa7dc452","replayed":[{"executionId":"509f0457d2804ba7b115faf1637beea6","replayExecutionId":"9c4874979d974c3ebdef1e8aaa7dc452"},{"executionId":"a07e16f2ad134bf49cf83a00aa95c0a5","replayExecutionId":"1f0c3b7d2e4a4c8f9b6d5e7a8c9d0e1f"}],"failed":[{"executionId":"d949cee5ac204fddb833041a3b4169cc","code":"SC422","message":"Execution is not replayable"}]}}}}}},"400":{"description":"400 Bad Request - invalid request body, for example an empty list, more than 100 IDs, duplicate IDs or a malformed ID (`IM005`)"},"403":{"description":"403 Forbidden - no execution was queued and the first one belongs to another team (`SC403`)"},"404":{"description":"404 Not Found - no execution was queued and the first one was not found (`SC404`)"},"422":{"description":"422 Unprocessable Entity - the organization or team is paused, or no execution was queued and the first one is not replayable (`SC422`)"},"429":{"description":"429 Too Many Requests - the organization or team is paused because a limit was exceeded (`IM310`), or no execution slot was available (`SC429`)"},"503":{"description":"503 Service Unavailable - execution replays are temporarily unavailable (`SC503`)"}}}},"/scenarios/replayable-executions/{scenarioId}":{"get":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"replayableExecutions":{"type":"array","items":{"type":"object","properties":{"executionName":{"anyOf":[{"type":"string"},{"type":"null"}]},"executionId":{"type":"string","minLength":32,"maxLength":32,"pattern":"^[a-zA-Z0-9]+$"}},"required":["executionName","executionId"]}}},"required":["replayableExecutions"]}}}},"x-internal":true,"tags":["Scenarios"],"summary":"Get replayable executions for scenarioId","description":"Returns a list of replayable executions for a given scenario","security":[{"token":["scenarios:run"]}],"parameters":[{"name":"scenarioId","in":"path","schema":{"type":"integer"},"description":"The ID of the scenario. Get the ID of the scenario with the API call `GET /scenarios`.","example":111,"required":true}],"responses":null}},"/scenarios/{scenarioId}/publish":{"post":{"x-internal":true,"tags":["Scenarios"],"summary":"Publish scenario","description":"This endpoint is set to internal because the scenario drafts feature is available only on the Celonis platform. In Make, this endpoint has no functionality.\nOriginal description:\nPublishes a draft of a scenario with a given ID. In the response, it returns all details of the published scenario.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"responses":{"200":{"description":"Scenario successfully published","content":{"application/json":{"schema":{"type":"object","properties":{"scenario":{"type":"object","properties":{"id":{"type":"integer"}}},"scenarioVersion":{"type":"object","properties":{"scenarioId":{"type":"integer"},"version":{"type":"integer"},"draft":{"type":"boolean"}}}}},"example":{"scenario":{"id":5},"scenarioVersion":{"scenarioId":5,"version":10,"draft":false}}}}},"403":{"description":"The draft being promoted places a locked connection or key the user is not allowed to use (`IM002`, placement guard). Returned only when locked-entities enforcement is enabled for the organization; a draft whose frozen modules are unchanged against the live blueprint passes.\n"},"409":{"description":"The scenario was modified concurrently between the placement-guard check and the promotion (`SC409`) — typically the draft was rewritten after it was checked. Nothing was published; retry the request. Returned only when locked-entities enforcement is enabled for the organization, since only then is the publish serialised against other writes to the scenario.\n"}}}},"/scenarios/{scenarioId}/interface":{"get":{"tags":["Scenarios"],"summary":"Get scenario interface","description":"Retrieves the scenario inputs and outputs specification for the specified scenario. Check out the [scenario inputs and outputs documentation](https://help.make.com/scenario-inputs-and-outputs) in the Make help center.The scenario inputs and outputs feature is available with all plans. [Read more about Make pricing.](https://www.make.com/en/pricing)","security":[{"token":["scenarios:read"]}],"parameters":[{"in":"path","name":"scenarioId","schema":{"type":"integer"},"required":true,"description":"The ID of the scenario. Get the list of scenarios with the API call `GET /scenarios`.","example":111}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"interface":{"type":"object","additionalProperties":{}}}},"example":{"interface":{"input":[{"name":"email","type":"text","default":null,"required":false,"multiline":false}],"output":null}}}}}}},"patch":{"tags":["Scenarios"],"summary":"Update scenario interface","description":"Updates specification of the scenario inputs. Check out the [scenario inputs documentation](https://www.make.com/en/help/scenarios/scenario-inputs) in the Make help center.\n\nIf you want to enable the scenario inputs you have to set the scenario scheduling to \"On demand\" first, otherwise you get error 422 (IM016). You can use the API call:\n\n`PATCH /scenarios/{scenarioId}?confirmed=true`\n\nwith the request body:\n\n`{\"scheduling\": \"{\\\"type\\\":\\\"on-demand\\\"}\"}`\n\nYou can disable inputs for the specified scenario by sending a payload with an empty `input` array.\n\nThe response contains the updated scenario inputs specification.\n\nThe scenario inputs feature requires your account to have the pricing plan **Pro** or higher. [Read more about Make pricing.](https://www.make.com/en/pricing)","security":[{"token":["scenarios:write"]}],"parameters":[{"name":"scenarioId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the scenario. Get the list of scenarios with the API call `GET /scenarios`.","example":111}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"interface":{"type":"object","additionalProperties":{},"description":"Contains the `input` array with specification of the scenario input parameters."}}},"examples":{"interface-update":{"summary":"Update scenario interface","description":"Updates scenario inputs to the specification you provide in the request body.","value":{"interface":{"input":[{"name":"userName","type":"text","default":"John Doe","required":true,"multiline":false},{"name":"employeeID","type":"number","default":null,"required":false},{"name":"enabledApps_array","spec":{"type":"text","default":"Salesforce","required":true,"multiline":false},"type":"array"},{"name":"myTestInput4_collection","spec":[{"name":"accountName","type":"text","default":"John Doe","required":true,"multiline":false},{"name":"accountID","type":"number","default":null,"required":true}],"type":"collection"}],"output":null}}},"delete-interface":{"summary":"Disable scenario inputs","description":"Disable scenario inputs for the specified scenario by sending empty `input` and `output` arrays in the request body.","value":{"interface":{"input":"","output":""}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"interface":{"type":"object","additionalProperties":{}}}},"examples":{"interface-update":{"value":{"interface":{"input":[{"name":"userName","type":"text","default":"John Doe","required":true,"multiline":false},{"name":"employeeID","type":"number","default":null,"required":false},{"name":"enabledApps_array","spec":{"type":"text","default":"Salesforce","required":true,"multiline":false},"type":"array"},{"name":"myTestInput4_collection","spec":[{"name":"accountName","type":"text","default":"John Doe","required":true,"multiline":false},{"name":"accountID","type":"number","default":null,"required":true}],"type":"collection"}],"output":null}}},"delete-interface":{"value":{"interface":{"input":null,"output":null}}}}}}}}}},"/scenarios/{scenarioId}/usage":{"get":{"tags":["Scenarios"],"summary":"Get scenario usage","description":"Retrieves a list of daily centicredits, operations, and data transfer usage for a specified scenario over the past 30 days.\n\nBy default, the endpoint uses the timezone of the user making the API call to define the start and end of each day in the 30-day timeframe.\n\nTo use the organization's timezone instead, set the `organizationTimezone` parameter to `true`. This ensures that the daily aggregates align with the organization's operational hours. This is especially useful for scenarios where aggregated data needs to align with the organization's operational hours.\n\nFor instance, a remote data analyst in India working for a Czech company can set `organizationTimezone=true` to ensure the usage data reflects the company's timezone, providing more relevant and accurate insights for organizational reporting and analysis.\n\nFor more information on timezones in Make, please refer to our [Help Center article](https://www.make.com/en/help/general/manage-time-zones).\n","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"organizationTimezone","in":"query","schema":{"type":"boolean"},"required":false,"description":"When set to `true`, the endpoint will calculate and return usage data based on the organization's timezone instead of the user's local timezone.","example":true}],"responses":{"200":{"description":"Successfully retrieved usage data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"operations":{"type":"integer"},"dataTransfer":{"type":"integer"},"centicredits":{"type":"integer"}}}}}},"example":{"data":[{"date":"2024-05-30","operations":9,"dataTransfer":135,"centicredits":900},{"date":"2024-05-31","operations":15,"dataTransfer":157,"centicredits":1500}]}}}}}}},"/scenarios/{scenarioId}/recovery":{"get":{"x-internal":true,"tags":["Scenarios"],"summary":"Get a scenario recovery snapshot","description":"Retrieves a scenario recovery snapshot if it exists for a given scenario. scenarioId = 0 is a sentinel for unsaved draft scenarios (no ownership check required). Uses team-scoped storage for cross-team draft isolation.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"teamId","in":"query","description":"The ID of the team. Used for team-scoped draft isolation.","schema":{"type":"integer"},"required":true,"example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","oneOf":[{"type":"object","properties":{"blueprint":{"type":"object","description":"The blueprint of the scenario recovery snapshot"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the scenario recovery snapshot was created"}},"required":["blueprint","createdAt"]},{"type":"object","properties":{"status":{"type":"string","enum":["not-found"],"description":"Status indicating no scenario recovery snapshot exists"}},"required":["status"]}]},"example":{"blueprint":{"modules":[{"id":1,"app":"slack"}],"connections":{}},"createdAt":"2025-02-23T10:30:00Z"}}}}}},"put":{"x-internal":true,"tags":["Scenarios"],"summary":"Save a scenario recovery snapshot","description":"Saves a scenario recovery snapshot for a given scenario and removes the present one if it exists. scenarioId = 0 is a sentinel for unsaved draft scenarios (no ownership check required). Uses team-scoped storage for cross-team draft isolation.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"teamId","in":"query","description":"The ID of the team. Used for team-scoped draft isolation.","schema":{"type":"integer"},"required":true,"example":11}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"blueprint":{"type":"object","description":"The scenario blueprint to save as a scenario recovery snapshot"}},"required":["blueprint"],"example":{"blueprint":{"modules":[{"id":1,"app":"slack"}],"connections":{}}}}}}},"responses":{"200":{"description":"Scenario recovery snapshot saved successfully","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"x-internal":true,"tags":["Scenarios"],"summary":"Discard a scenario recovery snapshot","description":"Discards a scenario recovery snapshot for a given scenario. scenarioId = 0 is a sentinel for unsaved draft scenarios (no ownership check required). Deletes the team-scoped recovery key.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"teamId","in":"query","description":"The ID of the team.","schema":{"type":"integer"},"required":true,"example":11}],"responses":{"200":{"description":"Scenario recovery snapshot discarded successfully","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioId":{"type":"integer","description":"The ID of the scenario"}}},"example":{"scenarioId":123}}}}}}},"/scenarios/logs":{"get":{"x-internal":true,"tags":["Scenarios"],"summary":"Cross-scenario execution feed (Pointee integration, undocumented)","description":"Returns completed execution summaries across all scenarios visible to the API token,\nordered ascending by completion time. Designed for polling integrations that need a\nsingle feed of \"what completed since last poll\" across the full scenario fleet.\n\n**Filtering:** Only `EXECUTION_END` records are returned (in-progress executions excluded).\n\n**Pagination:** Use `since` as the cursor — store `max(timestamp)` from the last response\nand pass it as `since` on the next poll.\n\n**Limit:** `since` must not be older than 90 days.\n","security":[{"token":["scenarios:read"]}],"parameters":[{"name":"since","in":"query","required":true,"description":"ISO8601 UTC timestamp. The server returns only executions whose completion time is\n**strictly greater than** this value. Store `max(timestamp)` from the last response\nas the next `since` cursor.\n","schema":{"type":"string","format":"date-time"},"example":"2026-05-25T10:00:00Z"},{"name":"until","in":"query","required":false,"description":"ISO8601 UTC timestamp upper bound (inclusive). Defaults to the current server time\nwhen omitted.\n","schema":{"type":"string","format":"date-time"},"example":"2026-05-25T11:00:00Z"},{"name":"pg[limit]","in":"query","required":false,"description":"Maximum number of execution summaries to return. Capped at 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioLogs":{"type":"array","items":{"type":"object","properties":{"imtId":{"type":"string","description":"Opaque cursor combining epoch ms and execution id."},"id":{"type":"string","description":"Execution ID (32-char hex)."},"scenarioId":{"type":"integer"},"organizationId":{"type":"integer"},"teamId":{"type":"integer","nullable":true},"timestamp":{"type":"string","format":"date-time"},"status":{"type":"integer","enum":[1,2,3],"description":"1 = success, 2 = warning, 3 = error"},"duration":{"type":"integer","description":"Execution duration in milliseconds."},"operations":{"type":"integer"},"centicredits":{"type":"integer"},"transfer":{"type":"integer","description":"Data transfer in bytes."},"eventType":{"type":"string","enum":["EXECUTION_END"]},"type":{"type":"string"},"instant":{"type":"boolean"}}}}}},"example":{"scenarioLogs":[{"imtId":"1716624000000_8c4f2a1b3d5e6f7a8b9c0d1e2f3a4b5c","id":"8c4f2a1b3d5e6f7a8b9c0d1e2f3a4b5c","scenarioId":123,"organizationId":1,"teamId":7,"timestamp":"2026-05-25T10:00:00Z","status":1,"duration":1234,"operations":5,"centicredits":50,"transfer":102400,"eventType":"EXECUTION_END","type":"auto","instant":false}]}}}},"400":{"description":"Invalid query parameters (e.g. `since` missing or older than 90 days)."},"401":{"description":"Missing or invalid API token."},"403":{"description":"Token lacks `scenarios:read` scope."}}}},"/scenarios/{scenarioId}/logs":{"get":{"tags":["Scenarios / Logs"],"summary":"List scenario logs","description":"Retrieves a collection of all logs for a scenario with a given ID. Returned logs are sorted by `imtId` in descending order. Logs with type `modify` can include versioned Scenario History changes in `detail.change`.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"from","in":"query","schema":{"type":"integer"},"description":"The timestamp in milliseconds that defines the starting point of time from which the logs should be retrieved. Older logs will not be returned.","example":1632395547},{"name":"to","in":"query","schema":{"type":"integer"},"description":"The timestamp in milliseconds that defines the ending point of time to which the logs should be retrieved. Newer logs will not be returned.","example":1632395548},{"name":"status","in":"query","schema":{"type":"integer","enum":[1,2,3]},"example":2,"description":"Filters logs by numeric terminal execution status. `1` is for success, `2` is for warning, and `3` is for error. Do not use this parameter with `displayStatus`."},{"name":"displayStatus","in":"query","schema":{"type":"string","enum":["RUNNING","WAITING","SUCCESS","WARNING","ERROR"]},"examples":{"waiting":{"value":"WAITING"}},"description":"Filters execution logs by derived display status. `WAITING` is a timed, parked execution. Do not use this parameter with `status`."},{"name":"durationFrom","in":"query","schema":{"type":"integer"},"description":"Filters logs to only include executions with a duration greater than or equal to this value (in milliseconds).","example":1000},{"name":"durationTo","in":"query","schema":{"type":"integer"},"description":"Filters logs to only include executions with a duration less than or equal to this value (in milliseconds).","example":5000},{"name":"operationsFrom","in":"query","schema":{"type":"integer"},"description":"Filters logs to only include executions with an operations count greater than or equal to this value.","example":0},{"name":"operationsTo","in":"query","schema":{"type":"integer"},"description":"Filters logs to only include executions with an operations count less than or equal to this value.","example":100},{"name":"transferFrom","in":"query","schema":{"type":"integer"},"description":"Filters logs to only include executions with a data transfer greater than or equal to this value (in bytes).","example":0},{"name":"transferTo","in":"query","schema":{"type":"integer"},"description":"Filters logs to only include executions with a data transfer less than or equal to this value (in bytes).","example":10000},{"name":"executionName","in":"query","schema":{"type":"string"},"description":"Filters logs by the execution name (partial match).","example":"My run"},{"name":"creditsFrom","in":"query","schema":{"type":"integer"},"description":"Filters logs to only include executions with credits greater than or equal to this value (in centicredits).","example":0},{"name":"creditsTo","in":"query","schema":{"type":"integer"},"description":"Filters logs to only include executions with credits less than or equal to this value (in centicredits).","example":1000},{"name":"showCheckRuns","in":"query","schema":{"type":"boolean"},"example":true,"description":"If set to `true`, check runs are included in the returned results. By default they are excluded. Check runs concern scenarios starting with a trigger in cases when the trigger does not find anything new."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The number of entities you want to skip before getting entities you want."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"The maximum number of entities you want to get in the response."},{"name":"pg[showLast]","in":"query","schema":{"type":"boolean"},"example":true,"description":"Include records with `last` value in the result set. Just in case of the `last` based paging."},{"name":"pg[last]","in":"query","schema":{"type":"integer"},"example":10,"description":"The last retrieved key. In response, you get only entries that follow after the key."},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioLogs":{"type":"array","items":{"allOf":[{"type":"object","properties":{"imtId":{"type":"string"},"duration":{"type":"integer"},"operations":{"type":"integer"},"transfer":{"type":"integer"},"centicredits":{"type":"integer"},"organizationId":{"type":"integer"},"teamId":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string"},"authorId":{"type":"integer","nullable":true},"authorName":{"type":"string","nullable":true,"description":"Name of the user who triggered the scenario run. Null when authorId is missing or unknown."},"instant":{"type":"boolean"},"timestamp":{"type":"string","format":"date-time"},"status":{"type":"integer","description":"Numeric terminal execution status. `1` is success, `2` is warning, and `3` is error. It is absent for active executions."},"eventType":{"type":"string","description":"Execution lifecycle marker on execution rows. `EXECUTION_PAUSED` means the execution is parked (interrupted) and waiting to resume; a parked row deliberately carries no `status`."},"resumeAt":{"type":"string","format":"date-time","description":"Only on a parked (`eventType: EXECUTION_PAUSED`) row whose wait is time-based: the ISO-8601 timestamp the execution is scheduled to resume. Absent for waits on an external signal (e.g. human-in-the-loop)."},"interruptReason":{"type":"string","enum":["sleep","hitl"],"description":"Only on a parked row: why the execution parked. `sleep` = a timed wait (has `resumeAt`); `hitl` = waiting for human input (no `resumeAt`)."},"interruptModuleId":{"type":"integer","description":"Only on a parked row: id of the module that parked the execution."},"interruptModuleName":{"type":"string","nullable":true,"description":"Only on a parked row: custom name of the module that parked the execution, resolved from the scenario blueprint. `null` when the module has not been renamed."},"provenance":{"description":"Only on execution rows of runs and replays requested through the API, an OAuth app or an MCP client: how the run was requested. Absent on other runs and on runs started before it was recorded.","allOf":[{"type":"object","description":"How a scenario change or run was requested: in the app, with an API token, through an OAuth app, by an MCP client, or by another Make service.","required":["v","channel","auth"],"properties":{"v":{"type":"integer","enum":[1]},"channel":{"type":"string","description":"How the request reached Make: `ui`, `api_token`, `oauth_app`, `mcp`, `service`, `external` or `unknown`. New values may be added."},"auth":{"type":"string","description":"How the request authenticated. New values may be added."},"services":{"type":"array","description":"Make services the request passed through, the original caller first.","items":{"type":"string"}},"tokenLabel":{"type":"string","description":"Label of the API token used."},"oauthClientId":{"type":"string","description":"Client ID of the OAuth app used."},"mcp":{"type":"object","description":"Details of an MCP tool call.","properties":{"authMethod":{"type":"string"},"client":{"type":"string","description":"MCP client, for example `claude`, `cursor` or `openai-mcp`; the client's User-Agent when not recognized."},"conversationId":{"type":"string"},"entrypoint":{"type":"string"},"tool":{"type":"string"},"requestId":{"oneOf":[{"type":"string"},{"type":"number"}]}}},"impersonated":{"type":"boolean","enum":[true],"description":"Present when a Make admin made the change while logged in as the user."},"requestId":{"type":"string","description":"ID of the HTTP request that made the change."}}}]},"detail":{"type":"object","description":"Event-specific details. Modify events can include a versioned Scenario History change.","properties":{"author":{"type":"object","properties":{"name":{"type":"string"},"staff":{"type":"boolean"}}},"change":{"anyOf":[{"type":"object","required":["version","kind","origin","label"],"properties":{"version":{"type":"integer","enum":[1]},"kind":{"type":"string","enum":["label-assigned","label-unassigned"]},"origin":{"type":"string","enum":["direct","cascade"]},"label":{"type":"object","required":["id","name"],"properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}},{"type":"object","required":["version","kind","origin","fromFolder","toFolder"],"properties":{"version":{"type":"integer","enum":[1]},"kind":{"type":"string","enum":["folder-moved"]},"origin":{"type":"string","enum":["direct","cascade"]},"fromFolder":{"type":"object","nullable":true,"required":["id","name","path"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"path":{"type":"string"}}},"toFolder":{"type":"object","nullable":true,"required":["id","name","path"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"path":{"type":"string"}}}}},{"type":"object","description":"A versioned Scenario History change not yet interpreted by this API specification.","additionalProperties":true}]},"provenance":{"description":"How the change was made. Absent on rows written before it was recorded and on system actions (for example plan downgrades).","allOf":[{"type":"object","description":"How a scenario change or run was requested: in the app, with an API token, through an OAuth app, by an MCP client, or by another Make service.","required":["v","channel","auth"],"properties":{"v":{"type":"integer","enum":[1]},"channel":{"type":"string","description":"How the request reached Make: `ui`, `api_token`, `oauth_app`, `mcp`, `service`, `external` or `unknown`. New values may be added."},"auth":{"type":"string","description":"How the request authenticated. New values may be added."},"services":{"type":"array","description":"Make services the request passed through, the original caller first.","items":{"type":"string"}},"tokenLabel":{"type":"string","description":"Label of the API token used."},"oauthClientId":{"type":"string","description":"Client ID of the OAuth app used."},"mcp":{"type":"object","description":"Details of an MCP tool call.","properties":{"authMethod":{"type":"string"},"client":{"type":"string","description":"MCP client, for example `claude`, `cursor` or `openai-mcp`; the client's User-Agent when not recognized."},"conversationId":{"type":"string"},"entrypoint":{"type":"string"},"tool":{"type":"string"},"requestId":{"oneOf":[{"type":"string"},{"type":"number"}]}}},"impersonated":{"type":"boolean","enum":[true],"description":"Present when a Make admin made the change while logged in as the user."},"requestId":{"type":"string","description":"ID of the HTTP request that made the change."}}}]}}}}},{"type":"object","properties":{"displayStatus":{"allOf":[{"type":"string","enum":["RUNNING","WAITING","SUCCESS","WARNING","ERROR"],"description":"Canonical status derived from the execution document. `WAITING` identifies a timed, parked execution."}],"description":"This field is absent for non-execution history rows."}}}]}},"pg":{"type":"object","properties":{"last":{"type":"string","description":"Shown only when using the `last` based pagination."},"showLast":{"type":"boolean","description":"Shown only when using the `last` based pagination."},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer","description":"Shown only when using the `offset` based pagination."}}}}},"examples":{"scheduled":{"summary":"Log of scheduled scenario","description":"Returns log of the scheduled scenario","value":{"scenarioLogs":[{"imtId":"1632371744497_scenario.1229.auto.da518adcd14b4b64ac6358823ccb80ca","duration":19979,"operations":10,"transfer":3942,"centicredits":1000,"organizationId":21,"teamId":27,"id":"da518adcd14b4b64ac6358823ccb80ca","type":"auto","authorId":null,"instant":false,"timestamp":"2021-09-23T04:35:44.497Z","status":1,"displayStatus":"SUCCESS"}],"pg":{"sortBy":"imtId","sortDir":"desc","last":"1632371803593_scenario.1229.auto.3cf2f332f74f43f1b2c4ae431cbedb5b","showLast":false,"limit":50}}},"manual":{"summary":"Log of manual scenario","description":"Returns log of the manual scenario","value":{"scenarioLogs":[{"imtId":"1632398122946_scenario.5.manual.cc1c49323b344687a324888762206003","duration":5611,"operations":2,"transfer":5,"centicredits":200,"organizationId":5,"teamId":16,"id":"cc1c49323b344687a324888762206003","type":"manual","authorId":5,"instant":true,"timestamp":"2021-09-23T11:55:22.946Z","status":1,"displayStatus":"SUCCESS","executionName":"Fancy run name"}],"pg":{"sortBy":"imtId","sortDir":"desc","last":"1632371803593_scenario.1229.auto.3cf2f332f74f43f1b2c4ae431cbedb5b","showLast":false,"limit":50}}},"paused":{"summary":"Log of a parked (paused/waiting) execution","description":"A parked execution surfaces as an `EXECUTION_PAUSED` row carrying `resumeAt`, `interruptReason` and `interruptModuleId` and no `status`. `resumeAt` is present only for time-based waits (`interruptReason: sleep`); a human-in-the-loop wait (`interruptReason: hitl`) has no resume time.","value":{"scenarioLogs":[{"imtId":"1632398200000_scenario.5.auto.aa1c49323b344687a324888762206099","duration":4200,"operations":3,"transfer":12,"centicredits":300,"organizationId":5,"teamId":16,"id":"aa1c49323b344687a324888762206099","type":"auto","authorId":null,"instant":false,"timestamp":"2021-09-23T11:56:40.000Z","eventType":"EXECUTION_PAUSED","resumeAt":"2021-09-23T12:56:40.000Z","interruptReason":"sleep","interruptModuleId":4,"interruptModuleName":"Wait for approval","displayStatus":"WAITING"}],"pg":{"sortBy":"imtId","sortDir":"desc","last":"1632371803593_scenario.1229.auto.3cf2f332f74f43f1b2c4ae431cbedb5b","showLast":false,"limit":50}}},"label-change":{"summary":"Log of a scenario label change","description":"Returns a versioned Scenario History entry for a direct label assignment.","value":{"scenarioLogs":[{"imtId":"1787299200000_28644c1a-89bb-4c24-84a9-1f40fccf73fd","id":"28644c1a-89bb-4c24-84a9-1f40fccf73fd","type":"modify","authorId":985,"authorName":"John Doe","timestamp":"2026-08-21T08:00:00.000Z","detail":{"author":{"name":"John Doe","staff":false},"change":{"version":1,"kind":"label-assigned","origin":"direct","label":{"id":42,"name":"Important"}}}}],"pg":{"sortBy":"imtId","sortDir":"desc","last":"1632371803593_scenario.1229.auto.3cf2f332f74f43f1b2c4ae431cbedb5b","showLast":false,"limit":50}}},"folder-change":{"summary":"Log of a scenario folder change","description":"Returns a versioned Scenario History entry for a direct move from Uncategorized.","value":{"scenarioLogs":[{"imtId":"1787300100000_52cd7898-b958-49e7-a348-8c6244980619","id":"52cd7898-b958-49e7-a348-8c6244980619","type":"modify","authorId":985,"authorName":"John Doe","timestamp":"2026-08-21T08:15:00.000Z","detail":{"author":{"name":"John Doe","staff":false},"change":{"version":1,"kind":"folder-moved","origin":"direct","fromFolder":null,"toFolder":{"id":84,"name":"Prague","path":"Europe/Czechia/Prague"}}}}],"pg":{"sortBy":"imtId","sortDir":"desc","last":"1632371803593_scenario.1229.auto.3cf2f332f74f43f1b2c4ae431cbedb5b","showLast":false,"limit":50}}}}}}}}}},"/scenarios/{scenarioId}/logs/{executionId}":{"get":{"tags":["Scenarios / Logs"],"summary":"Get execution log","description":"Retrieves an execution log with a given ID for a scenario with a given ID. It returns the execution details such as execution duration, type, and status.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"description":"The unique ID of the scenario execution. It can be retrieved from the [List scenario logs](/api-reference/scenarios/logs/get--scenarios--scenarioid--logs.md) endpoint under the ID key.","name":"executionId","in":"path","schema":{"type":"string"},"required":true,"example":"cc1c49323b344687a324888762206003"}],"responses":{"200":{"description":"Execution log retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioLog":{"allOf":[{"type":"object","properties":{"imtId":{"type":"string"},"duration":{"type":"integer"},"operations":{"type":"integer"},"transfer":{"type":"integer"},"centicredits":{"type":"integer"},"organizationId":{"type":"integer"},"teamId":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string"},"authorId":{"type":"integer","nullable":true},"authorName":{"type":"string","nullable":true,"description":"Name of the user who triggered the scenario run. Null when authorId is missing or unknown."},"instant":{"type":"boolean"},"timestamp":{"type":"string","format":"date-time"},"status":{"type":"integer","description":"Numeric terminal execution status. `1` is success, `2` is warning, and `3` is error. It is absent for active executions."},"eventType":{"type":"string","description":"Execution lifecycle marker on execution rows. `EXECUTION_PAUSED` means the execution is parked (interrupted) and waiting to resume; a parked row deliberately carries no `status`."},"resumeAt":{"type":"string","format":"date-time","description":"Only on a parked (`eventType: EXECUTION_PAUSED`) row whose wait is time-based: the ISO-8601 timestamp the execution is scheduled to resume. Absent for waits on an external signal (e.g. human-in-the-loop)."},"interruptReason":{"type":"string","enum":["sleep","hitl"],"description":"Only on a parked row: why the execution parked. `sleep` = a timed wait (has `resumeAt`); `hitl` = waiting for human input (no `resumeAt`)."},"interruptModuleId":{"type":"integer","description":"Only on a parked row: id of the module that parked the execution."},"interruptModuleName":{"type":"string","nullable":true,"description":"Only on a parked row: custom name of the module that parked the execution, resolved from the scenario blueprint. `null` when the module has not been renamed."},"provenance":{"description":"Only on execution rows of runs and replays requested through the API, an OAuth app or an MCP client: how the run was requested. Absent on other runs and on runs started before it was recorded.","allOf":[{"type":"object","description":"How a scenario change or run was requested: in the app, with an API token, through an OAuth app, by an MCP client, or by another Make service.","required":["v","channel","auth"],"properties":{"v":{"type":"integer","enum":[1]},"channel":{"type":"string","description":"How the request reached Make: `ui`, `api_token`, `oauth_app`, `mcp`, `service`, `external` or `unknown`. New values may be added."},"auth":{"type":"string","description":"How the request authenticated. New values may be added."},"services":{"type":"array","description":"Make services the request passed through, the original caller first.","items":{"type":"string"}},"tokenLabel":{"type":"string","description":"Label of the API token used."},"oauthClientId":{"type":"string","description":"Client ID of the OAuth app used."},"mcp":{"type":"object","description":"Details of an MCP tool call.","properties":{"authMethod":{"type":"string"},"client":{"type":"string","description":"MCP client, for example `claude`, `cursor` or `openai-mcp`; the client's User-Agent when not recognized."},"conversationId":{"type":"string"},"entrypoint":{"type":"string"},"tool":{"type":"string"},"requestId":{"oneOf":[{"type":"string"},{"type":"number"}]}}},"impersonated":{"type":"boolean","enum":[true],"description":"Present when a Make admin made the change while logged in as the user."},"requestId":{"type":"string","description":"ID of the HTTP request that made the change."}}}]},"detail":{"type":"object","description":"Event-specific details. Modify events can include a versioned Scenario History change.","properties":{"author":{"type":"object","properties":{"name":{"type":"string"},"staff":{"type":"boolean"}}},"change":{"anyOf":[{"type":"object","required":["version","kind","origin","label"],"properties":{"version":{"type":"integer","enum":[1]},"kind":{"type":"string","enum":["label-assigned","label-unassigned"]},"origin":{"type":"string","enum":["direct","cascade"]},"label":{"type":"object","required":["id","name"],"properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}},{"type":"object","required":["version","kind","origin","fromFolder","toFolder"],"properties":{"version":{"type":"integer","enum":[1]},"kind":{"type":"string","enum":["folder-moved"]},"origin":{"type":"string","enum":["direct","cascade"]},"fromFolder":{"type":"object","nullable":true,"required":["id","name","path"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"path":{"type":"string"}}},"toFolder":{"type":"object","nullable":true,"required":["id","name","path"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"path":{"type":"string"}}}}},{"type":"object","description":"A versioned Scenario History change not yet interpreted by this API specification.","additionalProperties":true}]},"provenance":{"description":"How the change was made. Absent on rows written before it was recorded and on system actions (for example plan downgrades).","allOf":[{"type":"object","description":"How a scenario change or run was requested: in the app, with an API token, through an OAuth app, by an MCP client, or by another Make service.","required":["v","channel","auth"],"properties":{"v":{"type":"integer","enum":[1]},"channel":{"type":"string","description":"How the request reached Make: `ui`, `api_token`, `oauth_app`, `mcp`, `service`, `external` or `unknown`. New values may be added."},"auth":{"type":"string","description":"How the request authenticated. New values may be added."},"services":{"type":"array","description":"Make services the request passed through, the original caller first.","items":{"type":"string"}},"tokenLabel":{"type":"string","description":"Label of the API token used."},"oauthClientId":{"type":"string","description":"Client ID of the OAuth app used."},"mcp":{"type":"object","description":"Details of an MCP tool call.","properties":{"authMethod":{"type":"string"},"client":{"type":"string","description":"MCP client, for example `claude`, `cursor` or `openai-mcp`; the client's User-Agent when not recognized."},"conversationId":{"type":"string"},"entrypoint":{"type":"string"},"tool":{"type":"string"},"requestId":{"oneOf":[{"type":"string"},{"type":"number"}]}}},"impersonated":{"type":"boolean","enum":[true],"description":"Present when a Make admin made the change while logged in as the user."},"requestId":{"type":"string","description":"ID of the HTTP request that made the change."}}}]}}}}},{"type":"object","required":["displayStatus"],"properties":{"displayStatus":{"type":"string","enum":["RUNNING","WAITING","SUCCESS","WARNING","ERROR"],"description":"Canonical status derived from the execution document. `WAITING` identifies a timed, parked execution."}}}]}}},"example":{"scenarioLog":{"imtId":"1632398122946_scenario.5.manual.cc1c49323b344687a324888762206003","duration":5611,"operations":2,"transfer":5,"centicredits":200,"organizationId":5,"teamId":16,"id":"cc1c49323b344687a324888762206003","type":"manual","authorId":5,"instant":true,"timestamp":"2021-09-23T11:55:22.946Z","status":1,"displayStatus":"SUCCESS"}}}}}}}},"/scenarios/{scenarioId}/logs/{executionId}/p":{"get":{"x-internal":true,"tags":["Scenarios / Logs"],"summary":"Get execution detail","description":"Retrieves enriched execution detail for a given execution. Without `include` the response\nshape is identical to `GET /scenarios/{scenarioId}/logs/{executionId}`. Use the `include`\nquery parameter to request additional data sections in a single call.\n","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"description":"The unique ID of the scenario execution. It can be retrieved from the [List scenario logs](/api-reference/scenarios/logs/get--scenarios--scenarioid--logs.md) endpoint under the ID key.","name":"executionId","in":"path","schema":{"type":"string"},"required":true,"example":"cc1c49323b344687a324888762206003"},{"name":"include","in":"query","required":false,"description":"Comma-separated list of optional data sections to include in the response.\nSupported values: `blueprint`, `events`, `bundles`. Unknown values are silently ignored.\n","schema":{"type":"string","example":"blueprint,events,bundles"}}],"responses":{"200":{"description":"Execution detail retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Execution ID"},"scenarioId":{"type":"integer"},"timestamp":{"type":"string","format":"date-time"},"duration":{"type":"integer","description":"Execution duration in milliseconds"},"status":{"type":"integer"},"operations":{"type":"integer"},"centicredits":{"type":"integer"},"blueprint":{"type":"object","description":"Present when `include=blueprint`","properties":{"modules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}}},"events":{"type":"array","description":"Present when `include=events`","items":{"type":"object","properties":{"kind":{"type":"string","enum":["moduleStart","moduleFinish","agentThinkingStarted","agentThinkingEnded"]},"moduleId":{"type":"integer"},"at":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["success","error"],"description":"Present on `moduleFinish` events only"}}}},"bundles":{"type":"object","description":"Present when `include=bundles`. Input/output bundles keyed by module id;\neach value is an array of records. Non-agent modules emit one record per\nstored bundle; AI-agent modules collapse a cycle's input + output into one\nrecord with an `agent` object (structural-only — message bodies omitted).\nEach `data[]` element is a stringified bundle capped at 256 KB; oversized\nelements are sliced and suffixed with ` ... `, so the snippet may not be\nvalid JSON.\n","additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","description":"Non-agent module bundle","properties":{"input":{"type":"boolean"},"module":{"type":"integer"},"cycle":{"type":"integer"},"operation":{"type":"integer"},"data":{"type":"array","items":{"type":"string"}},"error":{"type":"boolean"},"truncated":{"type":"boolean","description":"True when the 256 KB per-element cap shortened any data[] element of this bundle."}}},{"type":"object","description":"AI-agent module cycle (structural-only)","properties":{"module":{"type":"integer"},"cycle":{"type":"integer"},"operation":{"type":"integer"},"error":{"type":"string","nullable":true},"agent":{"type":"object","properties":{"model":{"type":"string"},"tokens":{"type":"object","properties":{"prompt":{"type":"integer"},"completion":{"type":"integer"}}},"agentSteps":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"executionTimeMs":{"type":"integer"},"tokens":{"type":"object","properties":{"prompt":{"type":"integer"},"completion":{"type":"integer"}}}}}}}}}}]}}}}}}}},"404":{"description":"Execution not found"}}}},"/scenarios/{scenarioId}/executions/{executionId}":{"get":{"tags":["Scenarios / Logs"],"summary":"Get scenario execution details","description":"Retrieves details about an execution.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"description":"The unique ID of the scenario execution. It can be retrieved from the [List scenario logs](/api-reference/scenarios/logs/get--scenarios--scenarioid--logs.md) endpoint under the ID key.","name":"executionId","in":"path","schema":{"type":"string"},"required":true,"example":"cc1c49323b344687a324888762206003"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["RUNNING","SUCCESS","WARNING","ERROR","PAUSED"],"description":"Status of the scenario execution:\n\n- RUNNING\n - SUCCESS\n - WARNING\n - ERROR\n - PAUSED — the execution is parked (interrupted) and waiting to resume "},"resumeAt":{"type":"string","format":"date-time","description":"Only present when `status` is `PAUSED` and the wait is time-based: the ISO-8601 timestamp the execution is scheduled to resume. Absent for waits on an external signal (e.g. human-in-the-loop).","example":"2026-09-10T12:00:00.000Z"},"interruptReason":{"type":"string","enum":["sleep","hitl"],"description":"Only present when `status` is `PAUSED`: why the execution parked. `sleep` = a timed wait (has `resumeAt`); `hitl` = waiting for human input (no `resumeAt`)."},"interruptModuleId":{"type":"integer","description":"Only present when `status` is `PAUSED`: id of the module that parked the execution.","example":4},"outputs":{"type":"object","additionalProperties":true,"description":"Outputs of the scenario execution. The structure of the outputs depends on the scenario configuration.","example":{"output1":"text output","output2":123}},"error":{"type":"object","properties":{"name":{"type":"string","description":"Name of the error."},"message":{"type":"string","description":"Description of the error."},"causeModule":{"type":"object","properties":{"name":{"type":"string","description":"Name of the module that caused the error."},"appName":{"type":"string","description":"Name of the app that caused the error."}}}}}}},"examples":{"successExecution":{"summary":"Successful execution","value":{"status":"SUCCESS","outputs":{"output1":"text output","output2":123}}},"runningExecution":{"summary":"Running execution","value":{"status":"RUNNING"}},"pausedExecutionTimedWait":{"summary":"Paused execution waiting until a resume time (sleep)","value":{"status":"PAUSED","resumeAt":"2026-09-10T12:00:00.000Z","interruptReason":"sleep","interruptModuleId":4}},"pausedExecutionHitl":{"summary":"Paused execution waiting for human input","value":{"status":"PAUSED","interruptReason":"hitl","interruptModuleId":4}},"executionWithError":{"summary":"Failed execution","value":{"status":"ERROR","error":{"message":"An error occurred while executing the scenario.","name":"RuntimeError","causeModule":{"name":"ActionSendData","appName":"http"}}}},"executionWithWarning":{"summary":"Execution completed with warning","value":{"status":"WARNING","error":{"message":"An error occurred while executing the scenario.","name":"RuntimeError","causeModule":{"name":"ActionSendData","appName":"http"}}}}}}}}}}},"/scenarios/{scenarioId}/executions/{executionId}/stop":{"post":{"tags":["Scenarios / Logs"],"summary":"Stop scenario execution","description":"Stops a running execution. Use `force: true` to immediately terminate the execution without waiting for the current module to finish.","security":[{"token":["scenarios:run"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"description":"The unique ID of the scenario execution. It can be retrieved from the [List scenario logs](/api-reference/scenarios/logs/get--scenarios--scenarioid--logs.md) endpoint under the ID key.","name":"executionId","in":"path","schema":{"type":"string"},"required":true,"example":"cc1c49323b344687a324888762206003"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"force":{"type":"boolean","description":"If set to `true`, the execution is terminated immediately. If set to `false` or omitted, the execution stops after the current module finishes.","default":false}}},"example":{"force":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"},"example":{}}}}}}},"/scenarios/{scenarioId}/executions/{executionId}/replay":{"post":{"x-internal":false,"tags":["Scenarios / Logs"],"summary":"Replay a scenario execution","description":"Replays one execution of the scenario. The replay creates a new execution that runs the latest version of the scenario with the data of the original execution. The scenario has to be active, and only executions marked as replayable can be replayed.\n\nTo replay several executions (up to 100) in one call, use `POST /scenarios/{scenarioId}/replay`.\n\nThe scenario is not replayed when its organization or team is paused because an operations or data transfer limit was exceeded. In that case the call returns `429` with the code `IM310`.\n","security":[{"token":["scenarios:run"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"description":"The unique ID of the scenario execution. It can be retrieved from the [List scenario logs](/api-reference/scenarios/logs/get--scenarios--scenarioid--logs.md) endpoint under the ID key.","name":"executionId","in":"path","schema":{"type":"string"},"required":true,"example":"cc1c49323b344687a324888762206003"}],"responses":{"202":{"description":"202 Accepted - the replay was queued","content":{"application/json":{"schema":{"type":"object","required":["executionId"],"properties":{"executionId":{"type":"string","description":"ID of the new execution that replays the original one."}}},"example":{"executionId":"9c4874979d974c3ebdef1e8aaa7dc452"}}}},"400":{"description":"400 Bad Request - malformed execution ID (`IM005`)"},"403":{"description":"403 Forbidden - the execution belongs to another team (`SC403`)"},"404":{"description":"404 Not Found - the execution was not found (`SC404`)"},"422":{"description":"422 Unprocessable Entity - the organization or team is paused, or the execution is not replayable (`SC422`)"},"429":{"description":"429 Too Many Requests - the organization or team is paused because a limit was exceeded (`IM310`), or no execution slot was available (`SC429`)"},"503":{"description":"503 Service Unavailable - execution replays are temporarily unavailable (`SC503`)"}}}},"/scenarios/modules/consumptions":{"post":{"x-internal":true,"tags":["Scenarios / Logs"],"summary":"Consumptions by Module","description":"Retrieves an array of scenarios containing aggregated list of operations, dataTransfer and centicredits per module within a specified time period.","security":[{"token":["scenarios:read"]}],"parameters":[{"name":"organizationId","in":"query","schema":{"type":"integer"},"example":30,"required":true},{"name":"days","in":"query","schema":{"type":"integer"},"description":"Days to summarize retrospectively. Default 1, must be between 1 and 30.","example":1,"required":false}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"scenarioIds":{"type":"array","items":{"type":"integer"}}}},"example":{"scenarioIds":[5,10]}}}},"responses":{"200":{"description":"Module log retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"scenarios":{"type":"array","items":{"type":"object","properties":{"scenarioId":{"type":"integer","description":"The ID of the scenario."},"modules":{"type":"array","items":{"type":"object","properties":{"moduleId":{"type":"integer"},"operations":{"type":"integer","description":"The total number of module executions, including warnings and errors, within a specified time period."},"dataTransfer":{"type":"integer"},"centicredits":{"type":"integer"},"warnings":{"type":"integer"},"errors":{"type":"integer"}}}}}}}}},"example":{"scenarios":[{"scenarioId":5,"modules":[{"moduleId":1,"operations":315,"dataTransfer":0,"centicredits":0,"warnings":0,"errors":1}]}]}}}}}}},"/scenarios/{scenarioId}/modules/operations":{"get":{"tags":["Scenarios / Logs"],"deprecated":true,"summary":"Operations by Module","description":"Retrieves an aggregated list of operations per module within a specified time period.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"days","in":"query","schema":{"type":"integer"},"description":"Days to summarize retrospectively. Default 1, must be between 1 and 30.","example":1,"required":false}],"responses":{"200":{"description":"Module log retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"operations":{"type":"array","items":{"type":"object","properties":{"moduleId":{"type":"integer"},"total":{"type":"integer","description":"The total number of module executions, including warnings and errors, within a specified time period."},"warnings":{"type":"integer"},"errors":{"type":"integer"}}}}}},"example":{"operations":[{"moduleId":1,"total":315,"warnings":0,"errors":1}]}}}}}}},"/scenarios/{scenarioId}/modules/{moduleId}/logs":{"get":{"tags":["Scenarios / Logs"],"summary":"List module logs","description":"Retrieves an operation logs of a given module within a given scenario. Returns the operation details such as execution id, timestamp or status.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"description":"The unique ID of the scenario module. It is available in the scenario blueprint that can be retrieved from the [Get scenario blueprint](/api-reference/scenarios/blueprint/get--scenarios--scenarioid--blueprint.md) endpoint.","name":"moduleId","in":"path","schema":{"type":"integer"},"example":1,"required":true},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The number of entities you want to skip before getting entities you want."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"The maximum number of entities you want to get in the response."},{"name":"pg[showLast]","in":"query","schema":{"type":"boolean"},"example":true,"description":"Include records with `last` value in the result set. Just in case of the `last` based paging."},{"name":"pg[last]","in":"query","schema":{"type":"integer"},"example":10,"description":"The last retrieved key. In response, you get only entries that follow after the key."},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."}],"responses":{"200":{"description":"Module logs retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"moduleLogs":{"type":"array","items":{"type":"object","properties":{"imtId":{"type":"string"},"executionId":{"type":"string"},"organizationId":{"type":"integer"},"teamId":{"type":"integer"},"scenarioId":{"type":"integer"},"timestamp":{"type":"string","format":"date-time"},"status":{"type":"integer"},"bundles":{"type":"integer"},"size":{"type":"integer"},"warning":{"type":"object","description":"Present when status equals 2.","properties":{"message":{"type":"string"}}},"error":{"type":"object","description":"Present when status equals 3.","properties":{"message":{"type":"string"}}}}}},"pg":{"type":"object","properties":{"last":{"type":"string","description":"Shown only when using the `last` based pagination."},"showLast":{"type":"boolean","description":"Shown only when using the `last` based pagination."},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer","description":"Shown only when using the `offset` based pagination."}}}}},"example":{"moduleLogs":[{"imtId":"1632398122946_384ef653d04844589e1c8427c13ffb15","executionId":"384ef653d04844589e1c8427c13ffb15","organizationId":5,"teamId":16,"scenarioId":5,"timestamp":"2021-09-23T11:55:22.946Z","status":1,"bundles":1}]}}}}}}},"/scenarios/{scenarioId}/notes":{"get":{"tags":["Scenarios / Notes"],"summary":"List of scenario notes","description":"Retrieves a collection of all scenario notes for a team and organization with a given ID. Returned notes are sorted by their id in descending order.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"description":"The unique ID of the team whose scenarios folders will be retrieved.","name":"teamId","in":"query","schema":{"type":"integer"},"example":1,"required":true},{"name":"organizationId","in":"query","schema":{"type":"integer"},"example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"notes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"scenarioId":{"type":"integer"},"moduleIds":{"type":"array","items":{"type":"integer"}},"metadata":{"type":"object"},"content":{"type":"string"},"created":{"type":"string"},"updated":{"type":"string","nullable":true},"isFilterNote":{"type":"boolean"},"createdByUser":{"type":"object"},"updatedByUser":{"type":"object"}}}}}},"example":{"notes":[{"id":4,"scenarioId":19,"moduleIds":[1],"metadata":{"color":"#9138FE"},"content":"<p>This is a test note</p>","created":"2025-09-01T12:58:42.994Z","updated":null,"isFilterNote":false,"createdByUser":{"id":2,"name":"John Doe","email":"j.doe@make.com"},"updatedByUser":{}}]}}}}}},"post":{"tags":["Scenarios / Notes"],"summary":"Create scenario note","description":"Creates a new scenario note with data passed in the request body. As the response, it returns all details of the created scenario note.","security":[{"token":["scenarios:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"moduleIds":{"type":"array","items":{"type":"integer"}},"metadata":{"type":"object"},"content":{"type":"string"},"isFilterNote":{"type":"boolean"}}},"example":{"moduleIds":[1],"metadata":{"color":"#9138FE"},"content":"<p>This is a test note</p>","isFilterNote":false}}}},"responses":{"200":{"description":"Created a Note","content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":"object","properties":{"id":{"type":"integer"},"scenarioId":{"type":"integer"},"moduleIds":{"type":"array","items":{"type":"integer"}},"metadata":{"type":"object"},"content":{"type":"string"},"created":{"type":"string"},"updated":{"type":"string","nullable":true},"isFilterNote":{"type":"boolean"},"createdByUser":{"type":"object"},"updatedByUser":{"type":"object"}}}}},"example":{"note":{"id":4,"scenarioId":19,"moduleIds":[1],"metadata":{"color":"#9138FE"},"content":"<p>This is a test note</p>","created":"2025-09-01T12:58:42.994Z","updated":null,"isFilterNote":false,"createdByUser":{"id":2,"name":"John Doe","email":"j.doe@make.com"},"updatedByUser":{}}}}}}}}},"/scenarios/{scenarioId}/notes/{noteId}":{"get":{"tags":["Scenarios / Notes"],"summary":"Get scenario note details","description":"Retrieves all available properties of a scenario note with a given ID.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"noteId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the scenario module note.","example":4},{"description":"The unique ID of the team whose scenarios folders will be retrieved.","name":"teamId","in":"query","schema":{"type":"integer"},"example":1,"required":true},{"name":"organizationId","in":"query","schema":{"type":"integer"},"example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":"object","properties":{"id":{"type":"integer"},"scenarioId":{"type":"integer"},"moduleIds":{"type":"array","items":{"type":"integer"}},"metadata":{"type":"object"},"content":{"type":"string"},"created":{"type":"string"},"updated":{"type":"string","nullable":true},"isFilterNote":{"type":"boolean"},"createdByUser":{"type":"object"},"updatedByUser":{"type":"object"}}}}},"example":{"note":{"id":4,"scenarioId":19,"moduleIds":[1],"metadata":{"color":"#9138FE"},"content":"<p>This is a test note</p>","created":"2025-09-01T12:58:42.994Z","updated":null,"isFilterNote":false,"createdByUser":{"id":2,"name":"John Doe","email":"j.doe@make.com"},"updatedByUser":{}}}}}}}},"patch":{"tags":["Scenarios / Notes"],"summary":"Update scenario note","description":"Updates a scenario note with a given ID by passing new values in the request body. Any property that is not provided will be left unchanged. In the response, it returns all details of the updated note including properties that were not changed.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"noteId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the scenario module note.","example":4},{"description":"The unique ID of the team whose scenarios folders will be retrieved.","name":"teamId","in":"query","schema":{"type":"integer"},"example":1,"required":true},{"name":"organizationId","in":"query","schema":{"type":"integer"},"example":11}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"moduleIds":{"type":"array","items":{"type":"integer"}},"metadata":{"type":"object"},"content":{"type":"string"},"isFilterNote":{"type":"boolean"}}},"example":{"moduleIds":[1],"metadata":{"color":"#9138FE"},"content":"<p>This is a test note</p>","isFilterNote":false}}}},"responses":{"200":{"description":"Note updated","content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":"object","properties":{"id":{"type":"integer"},"scenarioId":{"type":"integer"},"moduleIds":{"type":"array","items":{"type":"integer"}},"metadata":{"type":"object"},"content":{"type":"string"},"created":{"type":"string"},"updated":{"type":"string","nullable":true},"isFilterNote":{"type":"boolean"},"createdByUser":{"type":"object"},"updatedByUser":{"type":"object"}}}}},"example":{"note":{"id":4,"scenarioId":19,"moduleIds":[1],"metadata":{"color":"#9138FE"},"content":"<p>This is a test note</p>","created":"2025-09-01T12:58:42.994Z","updated":null,"isFilterNote":false,"createdByUser":{"id":2,"name":"John Doe","email":"j.doe@make.com"},"updatedByUser":{}}}}}}}},"delete":{"tags":["Scenarios / Notes"],"summary":"Delete scenario note","description":"Deletes a scenario note with a given ID and returns the ID in the response.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"noteId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the scenario module note.","example":4},{"description":"The unique ID of the team whose scenarios folders will be retrieved.","name":"teamId","in":"query","schema":{"type":"integer"},"example":1,"required":true},{"name":"organizationId","in":"query","schema":{"type":"integer"},"example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"}}},"example":{"id":123}}}}}}},"/scenarios/{scenarioId}/consumption-overview":{"get":{"x-internal":true,"tags":["Scenarios / Consumption Overview"],"summary":"Get scenario consumption overview","description":"Retrieves basic scenario credits and transfer consumption overview.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"from","in":"query","schema":{"type":"integer"},"description":"The timestamp in milliseconds that defines the starting point of time from which the logs should be retrieved. Older logs will not be returned.","example":1632395547},{"name":"to","in":"query","schema":{"type":"integer"},"description":"The timestamp in milliseconds that defines the ending point of time to which the logs should be retrieved. Newer logs will not be returned.","example":1632395548},{"name":"showCheckRuns","in":"query","schema":{"type":"boolean"},"example":true,"description":"If set to `true`, this parameter specifies that check runs should be hidden in the returned results. Check runs concern scenarios starting with a trigger in cases when the trigger does not find anything new."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":null,"scenarioConsumption":{"type":"object","properties":{"transfer":{"type":"number"},"centicredits":{"type":"number"}}}},"examples":{"total":{"summary":"Total consumption of all available scenario executions","description":"Returns scenario consumption","value":{"scenarioConsumption":[{"transfer":3942,"centicredits":50}]}}}}}}}}},"/scenarios/{scenarioId}/blueprint":{"get":{"tags":["Scenarios / Blueprints"],"summary":"Get scenario blueprint","description":"Retrieves a blueprint of a scenario with a given ID.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"blueprintId","in":"query","schema":{"type":"integer"},"description":"The unique ID of the blueprint version. It can be retrieved from the [Get blueprint versions](/api-reference/scenarios/blueprints/get--scenarios--scenarioid--blueprints.md) endpoint. This parameter can be useful when you want to retrieve the older version of the blueprint.","example":12},{"name":"draft","in":"query","schema":{"type":"boolean"},"description":"If this parameter is set to `true`, the draft version of the scenario blueprint will be retrieved. If set to `false`, the live version of the blueprint will be retrieved. In case that the `blueprintId` parameter is set to the query as well, this parameter is ignored.","example":false}],"responses":{"200":{"description":"Blueprint retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"response":{"type":"object","properties":{"blueprint":{"type":"object","properties":{"flow":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"ca":{"type":"string"},"qs":{"type":"array","items":{}},"url":{"type":"string","format":"uri"},"gzip":{"type":"boolean"},"method":{"type":"string"},"headers":{"type":"array","items":{}},"timeout":{"type":"string"},"authPass":{"type":"string"},"authUser":{"type":"string"},"bodyType":{"type":"string"},"shareCookies":{"type":"boolean"},"parseResponse":{"type":"boolean"},"followRedirect":{"type":"boolean"},"useQuerystring":{"type":"boolean"},"rejectUnauthorized":{"type":"boolean"}}},"module":{"type":"string","format":"uri"},"onerror":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"count":{"type":"string","format":"utc-millisec"},"retry":{"type":"boolean"},"interval":{"type":"string","format":"utc-millisec"}}},"module":{"type":"string","format":"uri"},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}},"restore":{"type":"object","properties":{"retry":{"type":"object","properties":{"mode":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}}}},"parameters":{"type":"object"}}}},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object"}},"restore":{"type":"object","properties":{"qs":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"method":{"type":"object","properties":{"mode":{"type":"string"},"label":{"type":"string"}}},"headers":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"bodyType":{"type":"object","properties":{"label":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}},"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}}}},"parameters":{"type":"object","properties":{"handleErrors":{"type":"boolean"}}}}}},"name":{"type":"string"},"metadata":{"type":"object","properties":{"version":{"type":"integer"},"scenario":{"type":"object","properties":{"maxErrors":{"type":"integer"},"autoCommit":{"type":"boolean"},"roundtrips":{"type":"integer","deprecated":true,"description":"This property is deprecated. Any value sent in a request is ignored: it is always stored and returned as `1`, and every execution runs a single cycle.\n"}}}}}}},"scheduling":{"type":"object","properties":{"type":{"type":"string","enum":["immediately","indefinitely","once","daily","weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":0},"date":{"type":"string","format":"date-time"},"between":{"type":"array","items":{"type":"string","format":"date-time"}},"time":{"type":"string","pattern":"^[0-2]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?(\\\\.[0-9]+)?$"},"days":{"type":"array","items":{"type":"integer","minimum":0,"maximum":31}},"months":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12}},"restrict":{"type":"array","items":{"type":"object","properties":{"time":{"type":"array","items":{"type":"string","nullable":true,"pattern":"^[0-2]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?(\\\\.[0-9]+)?$"}},"days":{"type":"array","items":{"type":"integer","minimum":0,"maximum":31}},"months":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12}}}}},"maximum_runs_per_minute":{"type":"integer","nullable":true,"minimum":1,"maximum":10000}}},"idSequence":{"type":"integer"},"created":{"type":"string","format":"date-time"},"last_edit":{"type":"string","format":"date-time"},"version":{"type":"integer","description":"The scenario's current version number (the highest version in its history, draft or published; `0` for a scenario without versions). It is the scenario's current version even when `blueprintId` selects an older blueprint. Send it back as `baseVersion` in `PATCH /scenarios/{scenarioId}` to have the save rejected if the scenario changed meanwhile.\n"}}}}},"example":{"code":"OK","response":{"blueprint":{"name":"Empty integration","flow":[{"id":2,"module":"json:ParseJSON","version":1,"metadata":{"designer":{"x":-46,"y":47,"messages":[{"category":"last","severity":"warning","message":"A transformer should not be the last module in the route."}]}}}],"metadata":{"version":1,"scenario":{"roundtrips":1,"maxErrors":3,"autoCommit":true,"autoCommitTriggerLast":true,"sequential":false,"confidential":false,"dataloss":false,"dlq":false,"freshVariables":false},"designer":{"orphans":[]}}},"scheduling":{"type":"indefinitely","interval":900},"idSequence":4,"created":"2021-09-22T09:28:41.129Z","last_edit":"2021-09-22T09:40:31.488Z","version":12}}}}}}}},"/scenarios/{scenarioId}/blueprints":{"get":{"tags":["Scenarios / Blueprints"],"summary":"Get blueprint versions","description":"Retrieves a collection of all blueprints versions for a scenario with a given ID. Due to the regular archiving process, only the versions that are not older than 60 days can be retrieved. Each returned blueprint version consists of the date and time of the blueprint creation, IDs of the blueprint version and related scenario, and the information if the blueprint was created for the draft or live scenario version.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"responses":{"200":{"description":"Blueprints versions successfully retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"scenariosBlueprints":{"type":"array","items":{"type":"object","properties":{"created":{"type":"string","format":"date-time"},"version":{"type":"integer"},"scenarioId":{"type":"integer"},"draft":{"type":"boolean"},"versionDescription":{"type":"string","nullable":true},"provenance":{"description":"How the version was saved. `null` for versions saved before it was recorded and for system saves.","nullable":true,"allOf":[{"type":"object","description":"How a scenario change or run was requested: in the app, with an API token, through an OAuth app, by an MCP client, or by another Make service.","required":["v","channel","auth"],"properties":{"v":{"type":"integer","enum":[1]},"channel":{"type":"string","description":"How the request reached Make: `ui`, `api_token`, `oauth_app`, `mcp`, `service`, `external` or `unknown`. New values may be added."},"auth":{"type":"string","description":"How the request authenticated. New values may be added."},"services":{"type":"array","description":"Make services the request passed through, the original caller first.","items":{"type":"string"}},"tokenLabel":{"type":"string","description":"Label of the API token used."},"oauthClientId":{"type":"string","description":"Client ID of the OAuth app used."},"mcp":{"type":"object","description":"Details of an MCP tool call.","properties":{"authMethod":{"type":"string"},"client":{"type":"string","description":"MCP client, for example `claude`, `cursor` or `openai-mcp`; the client's User-Agent when not recognized."},"conversationId":{"type":"string"},"entrypoint":{"type":"string"},"tool":{"type":"string"},"requestId":{"oneOf":[{"type":"string"},{"type":"number"}]}}},"impersonated":{"type":"boolean","enum":[true],"description":"Present when a Make admin made the change while logged in as the user."},"requestId":{"type":"string","description":"ID of the HTTP request that made the change."}}}]}}}}}},"example":{"scenariosBlueprints":[{"created":"2021-08-25T17:48:07.360Z","version":16,"scenarioId":424,"draft":false,"versionDescription":"Updated filters","provenance":{"v":1,"channel":"mcp","auth":"isc","services":["mcp-server-host"],"mcp":{"client":"claude","tool":"scenarios_update"}}}]}}}}}}},"/scenarios/{scenarioId}/build-variables":{"get":{"tags":["Scenarios"],"summary":"List buildtime variables","description":"Retrieves buildtime variables of a scenario with the given ID. Buildtime variables could be team or user defined, team defined ones are prefixed with a `TAC_` and user defined variables are prefixed with a `PAC_`. `TAC_`s can be used within the scenario as per its input spec by the entire team, whereas `PAC_`s can only be used within the scenario by the user who added them.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"variables":{"type":"object"}}},"example":{"variables":{"input":{"myPersonalConn1":"PAC_123455551","ourTeamConn1":"TAC_11112222"}}}}}}}},"post":{"tags":["Scenarios"],"summary":"Add new buildtime variables to scenario metadata","description":"Adds new buildtime team or user defined variable/s. Buildtime variables should be prefixed either with a `TAC_` (for team defined variables) or with a `PAC_` (for personal user defined variables), followed by the connection value. If a variable already exists, an error will be thrown. If a variable's name is not within scenario input specification, an error will be thrown. If the adding of new variables was successful the reponse would be `OK`.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name for the buildtime variable. The maximum length of the name is 128 characters."},"value":{"type":"string","description":"The value for the buildtime variable. It should start either with TAC_ or PAC_ followed by numeric chars only."}}}}}},"example":{"input":[{"name":"myPersonalConn1","value":"PAC_123455552"}]}}}},"responses":{"200":{"description":"Buildtime variables added successfully","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}},"400":{"description":"A team variable names a locked connection (`IM022`). A locked entity is not supported as a dynamic connection in this version, for every caller — select the connection in the module instead. Returned only when locked-entities enforcement is enabled for the organization, and only for a connection the scenario does not already use as a team variable under some name.\n"},"422":{"description":"Validation against the scenario input specification failed (`IM016`). Either a submitted value does not match the type declared for the variable (the response names the variable, its declared type and the JSON type of the submitted value; the value itself is not echoed back), or the stored input specification is malformed, for example an entry or a nested element specification without a name or type (the response carries the rejected specification fragment).","content":{"application/json":{"schema":{"type":"object","required":["code","message","detail","metadata"],"properties":{"code":{"type":"string","enum":["IM016"],"description":"Machine-readable error code. `IM016` is raised when a buildtime variable value does not match the type declared for it in the scenario input specification, or when the stored scenario input specification is malformed, for example an entry or a nested element specification without a name or type."},"message":{"type":"string","description":"Localized text for the error code."},"detail":{"type":"string","description":"Human-readable reason. For a type mismatch it names the rejected variable, the type its input specification declares and the JSON type of the submitted value; the submitted value itself is never echoed back. For a malformed input specification it says what the specification is missing."},"metadata":{"description":"Structured context for the error; its shape depends on the cause.","anyOf":[{"title":"Type mismatch","type":"object","required":["name","type","actualJsonbType"],"properties":{"name":{"type":"string","description":"Name of the rejected buildtime variable."},"type":{"type":"string","description":"Type declared for the variable in the scenario input specification."},"actualJsonbType":{"type":"string","enum":["string","number","boolean","object","array"],"description":"JSON type of the submitted value."}}},{"title":"Malformed input specification","description":"The fragment of the stored scenario input specification that failed validation, returned as-is. Usually a top-level entry object; for nested collection or array variables it is the nested element specification, which can be any JSON value (object, array, string, number, boolean or null)."}]}}},"example":{"code":"IM016","message":"Action is not possible due to dependencies.","detail":"Invalid value of variable myNumberVar. Type number expected, got string.","metadata":{"name":"myNumberVar","type":"number","actualJsonbType":"string"}}}}}}},"put":{"tags":["Scenarios"],"summary":"Update buildtime variables in scenario metadata","description":"Updates team or user defined buildtime variable/s. The endpoint updates and overwrites exsiting records with the newly provided values, meaning any existing buildtime variable which is not provided through the payload will be overwritten. Buildtime variables should be prefixed either with a `TAC_` (for team defined variables) or with a `PAC_` (for personal user defined variables), followed by the connection value. If a variable doesn't exist, it will be added provided that its name is within the scenario input specification. If the updating of variables was successful the reponse would be `OK`.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name for the buildtime variable. The maximum length of the name is 128 characters."},"value":{"type":"string","description":"The value for the buildtime variable. It should start either with TAC_ or PAC_ followed by numeric chars only."}}}}}},"example":{"input":[{"name":"myPersonalConn1","value":"PAC_123455552"},{"name":"ourTeamConn1","value":"TAC_11112222"}]}}}},"responses":{"200":{"description":"Buildtime variables updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}},"400":{"description":"A team variable names a locked connection (`IM022`). A locked entity is not supported as a dynamic connection in this version, for every caller — select the connection in the module instead. Returned only when locked-entities enforcement is enabled for the organization, and only for a connection the scenario does not already use as a team variable under some name — a payload that only keeps or removes existing values always passes.\n"},"422":{"description":"Validation against the scenario input specification failed (`IM016`). Either a submitted value does not match the type declared for the variable (the response names the variable, its declared type and the JSON type of the submitted value; the value itself is not echoed back), or the stored input specification is malformed, for example an entry or a nested element specification without a name or type (the response carries the rejected specification fragment).","content":{"application/json":{"schema":{"type":"object","required":["code","message","detail","metadata"],"properties":{"code":{"type":"string","enum":["IM016"],"description":"Machine-readable error code. `IM016` is raised when a buildtime variable value does not match the type declared for it in the scenario input specification, or when the stored scenario input specification is malformed, for example an entry or a nested element specification without a name or type."},"message":{"type":"string","description":"Localized text for the error code."},"detail":{"type":"string","description":"Human-readable reason. For a type mismatch it names the rejected variable, the type its input specification declares and the JSON type of the submitted value; the submitted value itself is never echoed back. For a malformed input specification it says what the specification is missing."},"metadata":{"description":"Structured context for the error; its shape depends on the cause.","anyOf":[{"title":"Type mismatch","type":"object","required":["name","type","actualJsonbType"],"properties":{"name":{"type":"string","description":"Name of the rejected buildtime variable."},"type":{"type":"string","description":"Type declared for the variable in the scenario input specification."},"actualJsonbType":{"type":"string","enum":["string","number","boolean","object","array"],"description":"JSON type of the submitted value."}}},{"title":"Malformed input specification","description":"The fragment of the stored scenario input specification that failed validation, returned as-is. Usually a top-level entry object; for nested collection or array variables it is the nested element specification, which can be any JSON value (object, array, string, number, boolean or null)."}]}}},"example":{"code":"IM016","message":"Action is not possible due to dependencies.","detail":"Invalid value of variable myNumberVar. Type number expected, got string.","metadata":{"name":"myNumberVar","type":"number","actualJsonbType":"string"}}}}}}},"delete":{"tags":["Scenarios"],"summary":"Delete buildtime variable","description":"Deletes a buildtime variable with a given value for a scenario with a given ID and returns `OK` in the response.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"value","in":"query","required":true,"schema":{"type":"string"},"description":"The value of the buildtime variable","example":"PAC_123455551"}],"responses":{"200":{"description":"Buildtime variable deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/scenarios/consumptions":{"get":{"tags":["Scenarios / Consumptions"],"summary":"List scenario consumptions","description":"Retrieves a list of scenarios and their current consumption. Make counts the number of consumed centicredits, operations, and transferred data according to your reset period.\n\nIf you have a monthly reset period, the response contains a list of scenarios that consumed at least one hundred centicredits (one operation) in the current reset period with their consumption and data transfer..\n\n<div class=\"alert alert-warning\"> <p>If you have a yearly reset period, the response contains a list of scenarios that consumed at least one hundred centicredits (one operation) in the last 60 days, or from the last reset if that period is shorter than 60 days.</p>\n<p>60 days after the reset the scenario consumptions turn into running totals over the last 60 days.</p>\n<p>For example, let's assume that you have a set of scenarios that consume 100000 centicredits (1000 operations) every day. On the 61st day from your last reset, you turn off a scenario that consumes 20000 centicredits (200 operations) every day, reducing your consumption to 80000 centicredits (800 operations) per day.<p>\n<p>If you would have the yearly reset period and you would be tracking your scenario consumptions, you would get the following data:</p>\n<div itemscope itemtype=\"https://schema.org/FAQPage\"> <div class=\"card table\"> <table class=\"table\"> <thead> <tr> <th><strong class=\"text-nowrap\">Day</strong></th> <th><strong>Consumptions</strong></th> <th><strong>Delta</strong></th> </tr> </thead> <tbody> <tr> <td>1</td> <td>1000</td> <td></td> </tr> <tr> <td>2</td> <td>2000</td> <td>1000</td> </tr> <tr> <td>3</td> <td>3000</td> <td>1000</td> </tr> <tr> <td>...</td> <td></td> <td></td> </tr> <tr> <td>60</td> <td>60000</td> <td>1000</td> </tr> <tr> <td>61</td> <td>59800</td> <td>-200</td> </tr> <tr> <td>62</td> <td>59600</td> <td>-200</td> </tr> </tbody> </table> </div> </div>\n<p>The negative difference between scenario consumptions on the 60th and 61st day happens because on the 61st day, the endpoint doesn't collect data from the first day anymore. Your scenario consumptions contain a total over the time period from the second day until the 61st day.</p>\n<p>For billing, Make uses a different system which ensures accurate billing.<p> </div>\n\nCheck the parameter `lastReset` in the response for the timestamp of the start of your current reset period. You can also view the end of your current restart period in your dashboard in the **Usage reset** field.\n\nSet the `organizationId` or `teamId` parameters to limit the results to a specific organization or team.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The unique ID of the team whose scenarios folders will be retrieved.","name":"teamId","in":"query","schema":{"type":"integer"},"example":1,"required":true},{"name":"organizationId","in":"query","schema":{"type":"integer"},"example":11,"description":"The ID of the organization."}],"responses":{"200":{"description":"Retrieved a list of Consumptions","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioConsumptions":{"type":"array","items":{"type":"object","properties":{"scenarioId":{"type":"integer"},"operations":{"type":"integer"},"transfer":{"type":"integer"},"centicredits":{"type":"integer"}}}},"lastReset":{"type":"string","format":"date-time"}}},"example":{"scenarioConsumptions":[{"scenarioId":1128,"operations":9,"transfer":135},{"scenarioId":424,"operations":5,"transfer":143,"centicredits":500}],"lastReset":"2021-09-10T08:53:25.292Z"}}}}}}},"/scenarios/tools":{"post":{"tags":["Scenarios / Tools"],"summary":"Create tool","x-internal":true,"description":"Creates a new tool with data passed in the request body. In the response, it returns all details of the created scenario including its blueprint.","security":[{"token":["scenarios:write"]}],"parameters":[{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","hookId","devices","deviceId","deviceScope","description","folderId","concept","folderPath","isinvalid","islinked","isActive","islocked","isPaused","usedPackages","usedModules","lastEdit","scheduling","iswaiting","dlqCount","allDlqCount","chainingRole","isShared","type","createdByUser","updatedByUser","created","nextExec","operations","centicredits","transfer","executions","errors","customProperties","templateMetadata","deleted","deletedAt","labels"]}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the tool."},"description":{"type":"string","description":"A description of the tool."},"inputs":{"type":"array","items":{"type":"object"}},"teamId":{"type":"integer","description":"The unique ID of the team in which the scenario will be created."},"module":{"type":"object","description":"The module of the tool. The module is a JSON object that contains the module ID, version, mapper, parameters, and metadata."}},"required":["name","description","teamId","moduleType","module"]},"examples":{"create":{"summary":"Dummy tool","value":{"name":"Dummy tool","description":"This is a dummy tool for testing purposes.","inputs":[{"name":"dummyKey","type":"string","label":"Label for dummy key","description":"This is a dummy key for testing purposes.","required":true}],"teamId":1,"module":{"module":"dummy:ActionDummy","version":1,"mapper":{"dummyKey":"dummyValue"},"parameters":null,"metadata":{"expect":[{"type":"string","name":"dummyKey","label":"Label for dummy key"}]}}}}}}}},"responses":{"200":{"description":"Tool created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"inputs":{"type":"array"},"teamId":{"type":"integer"},"module":{"type":"object","properties":{"module":{"type":"string"},"version":{"type":"integer"},"mapper":{"type":"object"},"parameters":{"type":"object"},"metadata":{"type":"object"}}}}}}},"example":{"tool":{"id":1,"name":"Dummy Tool","description":"This is a dummy tool for testing purposes.","inputs":[],"teamId":1,"module":{"module":"dummy:ActionDummy","version":1,"mapper":{},"parameters":{},"metadata":{}}}}}}},"403":{"description":"A module in the blueprint places a locked connection or key the user is not allowed to use (`IM002`, placement guard). Returned only when locked-entities enforcement is enabled for the organization; an untouched frozen module and releasing a locked entity (swapping it out or removing its module) always pass.\n"}}}},"/scenarios/tools/{scenarioId}":{"get":{"tags":["Scenarios / Tools"],"summary":"Get tool configuration","x-internal":true,"description":"Retrieves the tool configuration from the underlying scenario.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"inputs":{"type":"array"},"teamId":{"type":"integer"},"module":{"type":"object","properties":{"module":{"type":"string"},"version":{"type":"integer"},"mapper":{"type":"object"},"parameters":{"type":"object"},"metadata":{"type":"object"}}}}}}},"example":{"tool":{"id":1,"name":"Dummy Tool","description":"This is a dummy tool for testing purposes.","inputs":[],"teamId":1,"module":{"module":"dummy:ActionDummy","version":1,"mapper":{},"parameters":{},"metadata":{}}}}}}}}},"patch":{"tags":["Scenarios / Tools"],"summary":"Update tool configuration","description":"Updates a tool configuration with a given scenario ID by passing new values in the request body. Any property that is not provided will be left unchanged. In the response, it returns all details of the updated tool configuration of the underlying scenario, including properties that were not changed.","security":[{"token":["scenarios:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","hookId","devices","deviceId","deviceScope","description","folderId","concept","folderPath","isinvalid","islinked","isActive","islocked","isPaused","usedPackages","usedModules","lastEdit","scheduling","iswaiting","dlqCount","allDlqCount","chainingRole","isShared","type","createdByUser","updatedByUser","created","nextExec","operations","centicredits","transfer","executions","errors","customProperties","templateMetadata","deleted","deletedAt","labels"]}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the tool."},"description":{"type":"string","description":"A description of the tool."},"inputs":{"type":"array","items":{"type":"object"}},"module":{"type":"object","description":"The module of the tool. The module is a JSON object that contains the module ID, version, mapper, parameters, and metadata."}}},"examples":{"update":{"summary":"Dummy tool","value":{"name":"New tool name"}}}}}},"responses":{"200":{"description":"Scenario was updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"inputs":{"type":"array"},"teamId":{"type":"integer"},"module":{"type":"object","properties":{"module":{"type":"string"},"version":{"type":"integer"},"mapper":{"type":"object"},"parameters":{"type":"object"},"metadata":{"type":"object"}}}}}}},"example":{"tool":{"id":1,"name":"Dummy Tool","description":"This is a dummy tool for testing purposes.","inputs":[],"teamId":1,"module":{"module":"dummy:ActionDummy","version":1,"mapper":{},"parameters":{},"metadata":{}}}}}}},"403":{"description":"A module in the blueprint places a locked connection or key the user is not allowed to use (`IM002`, placement guard). Returned only when locked-entities enforcement is enabled for the organization; an untouched frozen module and releasing a locked entity (swapping it out or removing its module) always pass.\n"},"409":{"description":"The scenario was modified concurrently between the placement-guard check and the save (`SC409`). The save was not applied; retry the request.\n"}}}},"/scenarios/ai-agents":{"get":{"tags":["Scenarios"],"summary":"List AI agent scenarios","description":"Retrieves scenarios that contain at least one AI agent module for the specified team. Results are sorted by last edit date in descending order.","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The unique ID of the team whose scenarios folders will be retrieved.","name":"teamId","in":"query","schema":{"type":"integer"},"example":1,"required":true},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The number of entities you want to skip before getting entities you want."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"The maximum number of entities you want to get in the response."}],"responses":{"200":{"description":"Retrieved AI agent scenarios","content":{"application/json":{"schema":{"type":"object","properties":{"scenarios":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the scenario.","example":42},"name":{"type":"string","description":"The name of the scenario.","example":"My AI Agent Scenario"},"description":{"type":"string","nullable":true,"description":"The description of the scenario.","example":"A scenario that uses AI agents."},"isActive":{"type":"boolean","description":"Whether the scenario is currently active.","example":true},"teamId":{"type":"integer","description":"The unique ID of the team.","example":5},"created":{"type":"string","format":"date-time","description":"The date and time when the scenario was created."},"lastEdit":{"type":"string","format":"date-time","description":"The date and time when the scenario was last edited."},"scheduling":{"type":"object","description":"The scheduling configuration of the scenario."},"usedPackages":{"type":"array","items":{"type":"string"},"description":"The list of app packages used in the scenario.","example":["ai-local-agent","http"]},"agentCount":{"type":"integer","description":"The number of AI agent modules in the scenario.","example":2},"createdByUser":{"type":"object","nullable":true,"description":"The user who created the scenario.","properties":{"id":{"type":"integer","description":"The unique ID of the user.","example":1},"name":{"type":"string","nullable":true,"description":"The name of the user.","example":"John Doe"},"email":{"type":"string","description":"The email address of the user.","example":"john@example.com"}}}}}},"pg":{"type":"object","properties":{"limit":{"type":"integer","description":"The maximum number of results returned."},"offset":{"type":"integer","description":"The number of results skipped."}}}}}}}}}}},"/scenarios/ai-agents/modules":{"post":{"tags":["Scenarios"],"summary":"Get AI agent module details for scenarios","description":"Retrieves local AI agent module and tool details for scenarios belonging to the specified team. The underlying query recursively walks each scenario's blueprint and is expensive, so requests are hard-capped at 100 scenarios.\n\nProvide `scenarioIds` in the request body to look up specific scenarios - all of them must belong to `teamId`, or the request fails with a 403. Omit `scenarioIds` to page through the team's own AI agent scenarios instead, using `pg[limit]`/`pg[offset]` (same scenarios and ordering as `GET /scenarios/ai-agents`); the response then also includes a `pg` object so you can request the next page. `pg` parameters are ignored when `scenarioIds` is provided.\n\nAgents nested as another agent's own tool are not included - only agents found directly in a scenario's flow (including inside routes, branches, and error handlers).","security":[{"token":["scenarios:read"]}],"parameters":[{"description":"The unique ID of the team whose scenarios folders will be retrieved.","name":"teamId","in":"query","schema":{"type":"integer"},"example":1,"required":true},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The number of entities you want to skip before getting entities you want."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"The maximum number of entities you want to get in the response."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"scenarioIds":{"type":"array","items":{"type":"integer"},"minItems":1,"maxItems":100,"description":"The scenario IDs to retrieve agent module details for. All must belong to `teamId`. Omit this field to page through the team's AI agent scenarios instead.","example":[42,43]}}},"examples":{"byScenarioIds":{"summary":"Look up specific scenarios","value":{"scenarioIds":[42,43]}},"pageThroughTeam":{"summary":"Page through all of the team's AI agent scenarios","value":{}}}}}},"responses":{"200":{"description":"Retrieved AI agent module details","content":{"application/json":{"schema":{"type":"object","properties":{"agentModules":{"type":"array","items":{"type":"object","properties":{"scenarioId":{"type":"integer","description":"The unique ID of the scenario the agent module belongs to.","example":42},"id":{"type":"integer","description":"The unique ID of the agent module within the scenario's blueprint.","example":3},"module":{"type":"string","description":"The app:module identifier of the agent module.","example":"ai-local-agent:RunLocalAIAgent"},"userLabel":{"type":"string","nullable":true,"description":"The user-defined label of the agent module, if set.","example":"Support Agent"},"evaluationMode":{"type":"string","enum":["disabled","measured","measuredAndInferred"],"description":"The evaluation mode set in the agent module's `metrics` setting - `disabled`, `measured` (measured tags only) or `measuredAndInferred` (measured tags plus LLM-inferred tags). A missing value, or one mapped from another module, falls back to the legacy `inferredTagsEnabled` flag, at the top level of the module or inside its old `evaluations` collection (`true` meant `measuredAndInferred`), and otherwise reads as `measured`.","example":"measured"},"tools":{"type":"array","description":"The tools available to the agent module.","items":{"type":"object","properties":{"moduleId":{"type":"integer","description":"The unique ID of the tool's module within the scenario's blueprint.","example":4},"module":{"type":"string","description":"The app:module identifier of the tool.","example":"knowledge:KnowledgeStandAlone"},"name":{"type":"string","description":"The display name of the tool.","example":"Product Docs"},"fileIds":{"type":"array","items":{"type":"string"},"description":"The IDs of the knowledge files attached to the tool, present only for knowledge tools.","example":["5f8a1c2b-1234-4a5b-8c9d-0e1f2a3b4c5d"]}}}}}}},"pg":{"type":"object","description":"Present only when `scenarioIds` is omitted from the request body.","properties":{"limit":{"type":"integer","description":"The maximum number of scenarios processed."},"offset":{"type":"integer","description":"The number of scenarios skipped."}}}}},"examples":{"byScenarioIds":{"summary":"Response for a scenarioIds lookup","value":{"agentModules":[{"scenarioId":42,"id":3,"module":"ai-local-agent:RunLocalAIAgent","userLabel":"Support Agent","evaluationMode":"measured","tools":[{"moduleId":4,"module":"knowledge:KnowledgeStandAlone","name":"Product Docs","fileIds":["5f8a1c2b-1234-4a5b-8c9d-0e1f2a3b4c5d"]}]}]}},"pageThroughTeam":{"summary":"Response when paging through the team","value":{"agentModules":[{"scenarioId":42,"id":3,"module":"ai-local-agent:RunLocalAIAgent","userLabel":"Support Agent","evaluationMode":"measured","tools":[]}],"pg":{"limit":100,"offset":0}}}}}}},"400":{"description":"Invalid input - e.g. more than 100 scenarioIds, or pg[limit] greater than 100.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}},"example":{"message":"A maximum of 100 scenario IDs can be requested at once."}}}},"403":{"description":"One or more requested scenarioIds do not belong to teamId, or the caller lacks permission for the team.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}},"example":{"message":"One or more scenario IDs do not belong to this team."}}}}}}},"/scenarios-folders":{"get":{"tags":["Scenarios folders"],"summary":"List scenario folders","description":"Retrieves direct scenario folder children for a team or organization. Provide teamId or organizationId. If both are provided, teamId is used. Omit parentId to return top-level folders.","security":[{"token":["scenarios:read"]}],"parameters":[{"name":"teamId","in":"query","schema":{"type":"integer"},"description":"Unique ID of the Team.","example":1,"required":true},{"name":"organizationId","in":"query","description":"The unique ID of the organization whose scenario folders should be returned.","schema":{"type":"integer","minimum":1,"maximum":2147483647}},{"name":"parentId","in":"query","description":"The parent folder whose direct children should be returned. Omit to return top-level folders.","schema":{"type":"integer","minimum":1,"maximum":2147483647}},{"name":"childrenDepth","in":"query","description":"Set to `all` to return all descendants under `children`. By default, `children` includes only one direct child level.","schema":{"type":"string","enum":["all"]}},{"name":"cols[]","in":"query","description":"Specifies the group of values to return. For example, you may want to receive in response only the names and IDs of folders.","schema":{"type":"array","items":{"type":"string","enum":["id","name","path","parentId","position","scenariosTotal","scenariosSubtreeTotal","scenariosDeleted","scenariosDeletedSubtreeTotal","hasChildren","children"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"scenariosFolders":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"path":{"type":"string","description":"Slash-separated folder path including this folder, for example `CRM/cleanup`."},"teamId":{"type":"integer","description":"The unique ID of the team that owns the folder. Returned when listing folders by organization."},"parentId":{"type":"integer","nullable":true},"position":{"type":"integer","nullable":true},"scenariosTotal":{"type":"integer","description":"Number of scenarios directly assigned to this folder."},"scenariosSubtreeTotal":{"type":"integer","description":"Number of scenarios assigned to this folder or any descendant folder."},"scenariosDeleted":{"type":"integer","description":"Number of deleted scenarios directly assigned to this folder. Available to admin callers."},"scenariosDeletedSubtreeTotal":{"type":"integer","description":"Number of deleted scenarios assigned to this folder or any descendant folder. Available to admin callers."},"hasChildren":{"type":"boolean","description":"Whether this folder has direct child folders. Use parentId to retrieve them."},"children":{"type":"array","description":"Direct child folders of this folder. Contains all descendants when childrenDepth is set to `all`.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"path":{"type":"string"},"teamId":{"type":"integer","description":"The unique ID of the team that owns the folder. Returned when listing folders by organization."},"parentId":{"type":"integer","nullable":true},"position":{"type":"integer","nullable":true},"scenariosTotal":{"type":"integer"},"scenariosSubtreeTotal":{"type":"integer"},"scenariosDeleted":{"type":"integer","description":"Number of deleted scenarios directly assigned to this folder. Available to admin callers."},"scenariosDeletedSubtreeTotal":{"type":"integer","description":"Number of deleted scenarios assigned to this folder or any descendant folder. Available to admin callers."},"hasChildren":{"type":"boolean","description":"Whether this folder has direct child folders. Use parentId to retrieve them."}}}}}}}}},"example":{"scenariosFolders":[{"id":1576,"name":"ALPHA","path":"ALPHA","parentId":null,"position":null,"scenariosTotal":10,"scenariosSubtreeTotal":10,"hasChildren":false,"children":[]}]}}}}}},"post":{"tags":["Scenarios folders"],"summary":"Create scenario folder","description":"Creates a new scenario folder with data passed in the request body. As the response, it returns all details of the created scenario folder.","security":[{"token":["scenarios:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the scenario folder. The name must be at most 100 characters long and does not need to be unique."},"teamId":{"type":"integer","minimum":1,"maximum":2147483647,"description":"The unique ID of the team in which the scenario folder will be created."},"parentId":{"type":"integer","minimum":1,"maximum":2147483647,"nullable":true,"description":"The unique ID of the parent scenario folder. Omit or pass null to create a top-level folder."}},"required":["name","teamId"]},"example":{"name":"ZULU","teamId":123,"parentId":null}}}},"responses":{"200":{"description":"Created a Folder","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioFolder":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"path":{"type":"string","description":"Slash-separated folder path including this folder, for example `CRM/cleanup`."},"teamId":{"type":"integer","description":"The unique ID of the team that owns the folder. Returned when listing folders by organization."},"parentId":{"type":"integer","nullable":true},"position":{"type":"integer","nullable":true},"scenariosTotal":{"type":"integer","description":"Number of scenarios directly assigned to this folder."},"scenariosSubtreeTotal":{"type":"integer","description":"Number of scenarios assigned to this folder or any descendant folder."},"scenariosDeleted":{"type":"integer","description":"Number of deleted scenarios directly assigned to this folder. Available to admin callers."},"scenariosDeletedSubtreeTotal":{"type":"integer","description":"Number of deleted scenarios assigned to this folder or any descendant folder. Available to admin callers."},"hasChildren":{"type":"boolean","description":"Whether this folder has direct child folders. Use parentId to retrieve them."},"children":{"type":"array","description":"Direct child folders of this folder. Contains all descendants when childrenDepth is set to `all`.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"path":{"type":"string"},"teamId":{"type":"integer","description":"The unique ID of the team that owns the folder. Returned when listing folders by organization."},"parentId":{"type":"integer","nullable":true},"position":{"type":"integer","nullable":true},"scenariosTotal":{"type":"integer"},"scenariosSubtreeTotal":{"type":"integer"},"scenariosDeleted":{"type":"integer","description":"Number of deleted scenarios directly assigned to this folder. Available to admin callers."},"scenariosDeletedSubtreeTotal":{"type":"integer","description":"Number of deleted scenarios assigned to this folder or any descendant folder. Available to admin callers."},"hasChildren":{"type":"boolean","description":"Whether this folder has direct child folders. Use parentId to retrieve them."}}}}}}}},"example":{"scenarioFolder":{"id":1576,"name":"ALPHA","path":"ALPHA","parentId":null,"position":null,"scenariosTotal":10,"scenariosSubtreeTotal":10,"hasChildren":false,"children":[]}}}}}}}},"/scenarios-folders/move-scenarios":{"post":{"tags":["Scenarios folders"],"summary":"Move scenarios to a folder","description":"Moves selected scenarios from the specified team into a target folder. Use `targetFolderId: null` to uncategorize them.","security":[{"token":["scenarios:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"type":"integer","minimum":1,"maximum":2147483647,"description":"The team that owns all scenarios and the target folder."},"scenarioIds":{"type":"array","minItems":1,"maxItems":10000,"items":{"type":"integer","minimum":1,"maximum":2147483647},"description":"The scenario IDs to move."},"targetFolderId":{"type":"integer","minimum":1,"maximum":2147483647,"nullable":true,"description":"The target folder ID. Use null to uncategorize the scenarios."}},"required":["teamId","scenarioIds","targetFolderId"]},"example":{"teamId":123,"scenarioIds":[123,456],"targetFolderId":1576}}}},"responses":{"200":{"description":"Scenarios moved","content":{"application/json":{"schema":{"type":"object","properties":{"movedScenarioIds":{"type":"array","items":{"type":"integer"}},"targetFolderId":{"type":"integer","nullable":true}},"required":["movedScenarioIds","targetFolderId"]},"example":{"movedScenarioIds":[123,456],"targetFolderId":1576}}}}}}},"/scenarios-folders/reorder":{"post":{"tags":["Scenarios folders"],"summary":"Reorder scenario folders","description":"Sets manual positions for direct sibling folders within one parent. Omitted siblings have their position cleared and are listed alphabetically after positioned folders.","security":[{"token":["scenarios:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"teamId":{"type":"integer","minimum":1,"maximum":2147483647,"description":"The team that owns the sibling folder set."},"parentId":{"type":"integer","minimum":1,"maximum":2147483647,"nullable":true,"description":"The parent folder whose direct children are being reordered. Omit or pass null for top-level folders."},"folderIds":{"type":"array","minItems":1,"maxItems":999,"uniqueItems":true,"items":{"type":"integer","minimum":1,"maximum":2147483647},"description":"Folder IDs in the desired order. All folders must be direct siblings under parentId. Omitted sibling folders have their position cleared."}},"required":["teamId","folderIds"]},"example":{"teamId":123,"parentId":null,"folderIds":[1576,1577]}}}},"responses":{"200":{"description":"Scenario folders reordered","content":{"application/json":{"schema":{"type":"object","properties":{"reorderedFolderIds":{"type":"array","items":{"type":"integer"}},"parentId":{"type":"integer","nullable":true}},"required":["reorderedFolderIds","parentId"]},"example":{"reorderedFolderIds":[1576,1577],"parentId":null}}}}}}},"/scenarios-folders/{folderId}":{"patch":{"tags":["Scenarios folders"],"summary":"Update scenario folder","description":"Updates a scenario folder with a given ID by passing a new name, a new parent folder, or both in the request body. Use parentId null to move the folder to the top level. Any property that is not provided will be left unchanged. In the response, it returns all details of the updated folder including properties that were not changed.","security":[{"token":["scenarios:write"]}],"parameters":[{"name":"folderId","in":"path","schema":{"type":"integer"},"description":"The unique ID of the scenario folder. It can be retrieved from the [List scenarios folders](/api-reference/scenarios-folders/get--scenarios-folders.md) endpoint.","example":1,"required":true},{"name":"cols[]","in":"query","description":"Specifies the group of values to return. For example, you may want to receive in response only the names and IDs of folders.","schema":{"type":"array","items":{"type":"string","enum":["id","name","path","parentId","position","scenariosTotal","scenariosSubtreeTotal","scenariosDeleted","scenariosDeletedSubtreeTotal","hasChildren","children"]}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","minProperties":1,"additionalProperties":false,"properties":{"name":{"type":"string","description":"The name for the updated scenario folder. The name must be at most 100 characters long and does not need to be unique."},"parentId":{"type":"integer","minimum":1,"maximum":2147483647,"nullable":true,"description":"The unique ID of the new parent scenario folder. Use null to move the folder to the top level."}}},"example":{"name":"BRAVO","parentId":null}}}},"responses":{"200":{"description":"Folder updated","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioFolder":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"path":{"type":"string","description":"Slash-separated folder path including this folder, for example `CRM/cleanup`."},"teamId":{"type":"integer","description":"The unique ID of the team that owns the folder. Returned when listing folders by organization."},"parentId":{"type":"integer","nullable":true},"position":{"type":"integer","nullable":true},"scenariosTotal":{"type":"integer","description":"Number of scenarios directly assigned to this folder."},"scenariosSubtreeTotal":{"type":"integer","description":"Number of scenarios assigned to this folder or any descendant folder."},"scenariosDeleted":{"type":"integer","description":"Number of deleted scenarios directly assigned to this folder. Available to admin callers."},"scenariosDeletedSubtreeTotal":{"type":"integer","description":"Number of deleted scenarios assigned to this folder or any descendant folder. Available to admin callers."},"hasChildren":{"type":"boolean","description":"Whether this folder has direct child folders. Use parentId to retrieve them."},"children":{"type":"array","description":"Direct child folders of this folder. Contains all descendants when childrenDepth is set to `all`.","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"path":{"type":"string"},"teamId":{"type":"integer","description":"The unique ID of the team that owns the folder. Returned when listing folders by organization."},"parentId":{"type":"integer","nullable":true},"position":{"type":"integer","nullable":true},"scenariosTotal":{"type":"integer"},"scenariosSubtreeTotal":{"type":"integer"},"scenariosDeleted":{"type":"integer","description":"Number of deleted scenarios directly assigned to this folder. Available to admin callers."},"scenariosDeletedSubtreeTotal":{"type":"integer","description":"Number of deleted scenarios assigned to this folder or any descendant folder. Available to admin callers."},"hasChildren":{"type":"boolean","description":"Whether this folder has direct child folders. Use parentId to retrieve them."}}}}}}}},"example":{"scenarioFolder":{"id":1576,"name":"ALPHA","path":"ALPHA","parentId":null,"position":null,"scenariosTotal":10,"scenariosSubtreeTotal":10,"hasChildren":false,"children":[]}}}}}}},"delete":{"tags":["Scenarios folders"],"summary":"Delete scenario folder","description":"Deletes a scenario folder with a given ID and returns the ID in the response. Scenarios in the deleted folder and its subfolders are moved to the deleted folder's parent, or uncategorized when deleting a top-level folder. Descendant folders are deleted.","security":[{"token":["scenarios:write"]}],"parameters":[{"name":"folderId","in":"path","schema":{"type":"integer"},"description":"The unique ID of the scenario folder. It can be retrieved from the [List scenarios folders](/api-reference/scenarios-folders/get--scenarios-folders.md) endpoint.","example":1,"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioFolder":{"type":"integer"}}},"example":{"scenarioFolder":123}}}}}}},"/scenarios/{scenarioId}/custom-properties":{"get":{"tags":["Scenarios / Custom properties data"],"summary":"Get custom properties data","description":"Gets custom properties data of the specified scenario.","security":[{"token":["scenarios:read"]}],"parameters":[{"name":"scenarioId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the scenario.","example":22}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"customProperties":{"type":"object"},"scenarioId":{"type":"number"}}},"example":{"customProperties":{"category":["notifications","routing"],"customId":45,"location":"London, UK","companyTeam":"Product","description":"This scenario handles notifications for the Product team in London.","highPriority":true,"performanceCheck":"2023-08-31T14:19:00.000Z"},"scenarioId":22}}}}}},"post":{"tags":["Scenarios / Custom properties data"],"summary":"Fill in custom properties data","description":"Fills in custom properties data for the specified scenario. The scenario has to have no custom properties data.\n\nThe data you fill in has to conform to the current custom scenario properties structure. You have to specify a value for every required item, otherwise you get an error.\n\nTo update existing data, use the following API calls:\n\n- [Update custom properties data](./patch--scenarios--scenarioid--custom-properties.md)\n- [Set custom properties data](./put--scenarios--scenarioid--custom-properties.md)\n","security":[{"token":["scenarios:write"]}],"parameters":[{"name":"scenarioId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the scenario.","example":80}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"},"example":{"companyTeam":"marketing","customId":60,"performanceCheck":"2024-09-31T14:19:00.000Z","category":["eshop"],"highPriority":false,"location":"Chicago, US","description":"Scenario for the Marketing team to share information with other stakeholders."}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"customProperties":{"type":"object"},"scenarioId":{"type":"number"}}},"example":{"customProperties":{"category":["eshop"],"customId":60,"location":"Chicago, US","companyTeam":"marketing","description":"Scenario for the Marketing team to share information with other stakeholders.","highPriority":false,"performanceCheck":"2024-10-01T14:19:00.000Z"},"scenarioId":80}}}}}},"patch":{"tags":["Scenarios / Custom properties data"],"summary":"Update custom properties data","description":"Updates custom properties data of the specified scenario. Make updates only the custom properties data you specify in the request body.\n\nThe custom property has to contain data already. The update data have to conform to the current custom scenario properties structure. If the initial value is empty, then the API call returns an error.\n\nTo fill in first values to the custom properties, use the API call to [fill in custom properties data](./post--scenarios--scenarioid--custom-properties.md).\n","security":[{"token":["scenarios:write"]}],"parameters":[{"name":"scenarioId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the scenario.","example":80}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"},"examples":{"basic-example":{"summary":"Update item data","description":"Update custom property item data. Make updates only the data you specify in the request body.","value":{"customId":48,"location":"Wien, AUS"}},"options-example":{"summary":"Update options","description":"Update custom property item data from a list of options. If you specify a value that is not part of the list of available options, you get an error.","value":{"category":["marketing","engineering"]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"customProperties":{"type":"object"},"scenarioId":{"type":"number"}}},"examples":{"basic-example":{"value":{"customProperties":{"category":["eshop","products"],"customId":48,"location":"Wien, AUS","companyTeam":"Product","description":"This scenario is handling notifications for the Product team in London.","highPriority":true,"performanceCheck":"2023-08-31T14:19:00.000Z"},"scenarioId":80}},"options-example":{"value":{"customProperties":{"category":["marketing","engineering"],"customId":46,"location":"London, UK","companyTeam":"Product","description":"This scenario is handling notifications for the Product team in London.","highPriority":true,"performanceCheck":"2023-08-31T14:19:00.000Z"},"scenarioId":80}}}}}}}},"put":{"tags":["Scenarios / Custom properties data"],"summary":"Set custom properties","description":"Sets custom properties data for the specified scenario. Make replaces the original data with the data you send in the request body.\n\nYou have to specify a value for every required custom properties structure item, otherwise you get an error.\n\nThe scenario has to have custom property data already. The new data set has to conform to the current custom scenario properties structure. If the initial data is empty, then the API call returns an error.\n\nTo fill in first values to the custom properties, use the API call to [fill in custom properties data](./post--scenarios--scenarioid--custom-properties.md).\n","security":[{"token":["scenarios:write"]}],"parameters":[{"name":"scenarioId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the scenario.","example":80}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"},"example":{"companyTeam":"engineering","customId":50,"performanceCheck":"2024-08-31T14:19:00.000Z","category":["notifications","routing"],"highPriority":false,"location":"London, UK","description":"Scenario for the London engineering team"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"customProperties":{"type":"object"},"scenarioId":{"type":"number"}}},"example":{"customProperties":{"category":["notifications","routing"],"customId":50,"location":"London, UK","companyTeam":"engineering","description":"Scenario for the London engineering team","highPriority":false,"performanceCheck":"2024-08-31T14:19:00.000Z"},"scenarioId":80}}}}}},"delete":{"tags":["Scenarios / Custom properties data"],"summary":"Delete custom properties data","description":"Deletes custom properties data.\nDeleting custom properties data is irreversible.\nUse the `confirmed` parameter to confirm deleting the data, otherwise you get an error and the data are not deleted.","security":[{"token":["scenarios:write"]}],"parameters":[{"name":"scenarioId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the scenario.","example":28},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/scenarios-shared":{"get":{"operationId":"getScenarioSharesList","tags":["Scenarios shared"],"summary":"List shared scenarios","description":"Returns a paginated list of shared scenarios for a specified organization or team.\nSupports filtering by title, scenario name, and folder ID.\n\n**Note**: Either `organizationId` or `teamId` must be provided, but not both.\n","security":[{"token":["scenarios-shared:read"]}],"parameters":[{"name":"organizationId","in":"query","schema":{"type":"integer","minimum":1},"description":"The ID of the organization. Mutually exclusive with `teamId`.","example":123},{"name":"teamId","in":"query","schema":{"type":"integer","minimum":1},"description":"The ID of the team. Mutually exclusive with `organizationId`.","example":456},{"name":"folderId","in":"query","schema":{"type":"integer","minimum":1},"description":"Filter results by folder ID.","example":789},{"name":"title","in":"query","schema":{"type":"string","minLength":1,"maxLength":255},"description":"Filter results by shared scenario title (case-insensitive partial match).","example":"My Workflow"},{"name":"scenarioName","in":"query","schema":{"type":"string","minLength":1,"maxLength":255},"description":"Filter results by the original scenario name (case-insensitive partial match).","example":"Data Processing"},{"name":"scenarioIds","in":"query","schema":{"type":"array","items":{"type":"integer","minimum":1}},"description":"Filter results by multiple scenario IDs. Accepts an array of scenario IDs to match.","example":[123,456,789],"style":"form","explode":true},{"name":"pg[limit]","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"description":"Number of results per page.","example":20},{"name":"pg[offset]","in":"query","schema":{"type":"integer","minimum":0,"default":0},"description":"Number of results to skip (for pagination).","example":0},{"name":"pg[sortBy]","in":"query","schema":{"type":"string","enum":["id","title","createdAt","updated"],"default":"id"},"description":"Column to sort results by.","example":"title"},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"desc"},"description":"Sort direction (ascending or descending).","example":"asc"},{"name":"pg[returnTotalCount]","in":"query","schema":{"type":"boolean","default":false},"description":"Whether to return the total count of matching records.","example":false}],"responses":{"200":{"description":"Successful response with paginated list of shared scenarios","content":{"application/json":{"schema":{"type":"object","properties":{"scenariosShared":{"type":"array","description":"Array of shared scenarios","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the shared scenario","example":"abc123xyz"},"scenarioId":{"type":"integer","description":"ID of the original scenario","example":789},"title":{"type":"string","description":"Title of the shared scenario","example":"My Workflow"},"scenarioName":{"type":"string","description":"Name of the original scenario","example":"Data Processing"},"descriptionShort":{"type":"string","nullable":true,"description":"Short description of the shared scenario","example":"This workflow processes data from multiple sources"},"scenarioUsedPackages":{"type":"array","description":"List of packages/modules used in the scenario","items":{"type":"string"},"example":["http","json","google-sheets"]},"shareUrl":{"type":"string","description":"Public URL for accessing the shared scenario","example":"https://www.make.com/s/abc123xyz"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the shared scenario was created","example":"2024-01-15T10:30:00Z"},"updated":{"type":"string","format":"date-time","description":"Timestamp when the shared scenario was last updated","example":"2024-01-20T14:45:00Z"}}}},"pg":{"type":"object","description":"Pagination metadata","properties":{"limit":{"type":"integer","description":"Number of results per page","example":20},"offset":{"type":"integer","description":"Number of results skipped","example":0},"sortBy":{"type":"string","description":"Column used for sorting","example":"title"},"sortDir":{"type":"string","enum":["asc","desc"],"description":"Sort direction","example":"asc"},"returnTotalCount":{"type":"boolean","description":"Whether total count was requested","example":false},"totalCount":{"type":"integer","description":"Total count of matching records (only present if returnTotalCount is true)","example":150}}}}}}}},"400":{"description":"Bad request - invalid parameters (e.g., both organizationId and teamId provided, or neither)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Either organizationId or teamId must be provided, but not both"}}}}}},"401":{"description":"Unauthorized - missing or invalid authentication token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Unauthorized"}}}}}},"403":{"description":"Forbidden - insufficient permissions for the specified organization or team","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Insufficient permissions"}}}}}}}}},"/scenarios-shared/{scenarioId}":{"get":{"tags":["Scenarios shared"],"summary":"List shared scenarios for scenario","description":"Returns all shares created for the specified scenario.","security":[{"token":["scenarios-shared:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"responses":{"200":{"description":"List of scenario shares","content":{"application/json":{"schema":{"type":"object","properties":{"scenariosShared":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"scenarioId":{"type":"integer"},"title":{"type":"string"},"titleOriginal":{"type":"string"},"descriptionShort":{"type":"string","nullable":true},"descriptionLong":{"type":"string","nullable":true},"thumbnailUrl":{"type":"string","nullable":true},"shareUrl":{"type":"string"},"shareUrlCardinal":{"type":"string"},"isEnabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"}}}}}},"example":{"scenariosShared":[{"id":"a1B2c3D4e5F","scenarioId":112,"title":"My awesome automation","titleOriginal":"My awesome automation","descriptionShort":"Short description of the automation.","descriptionLong":"Detailed description of the automation.","thumbnailUrl":"https://cdn.example.com/abc123.jpg","shareUrl":"https://www.make.com/scenarios/shared/a1B2c3D4e5F","shareUrlCardinal":"https://cardinal.make.com/scenarios/shared/a1B2c3D4e5F","isEnabled":true,"createdAt":"2024-09-01T12:00:00.000Z","updated":"2024-09-02T08:30:00.000Z"}]}}}}}},"post":{"tags":["Scenarios shared"],"summary":"Create scenario share","description":"Creates a share of the specified scenario.","security":[{"token":["scenarios-shared:write","scenarios:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":40},"descriptionShort":{"type":"string","maxLength":260,"nullable":true},"descriptionLong":{"type":"string","maxLength":2000,"nullable":true},"isEnabled":{"type":"boolean","default":false}},"required":["title"]},"example":{"title":"My awesome automation","descriptionShort":"Short description of the automation.","descriptionLong":"Detailed description of the automation.","isEnabled":true}}}},"responses":{"200":{"description":"Shared scenario created","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioShared":{"type":"object","properties":{"id":{"type":"string"},"scenarioId":{"type":"integer"}}}}},"example":{"scenarioShared":{"id":"a1B2c3D4e5F","scenarioId":112}}}}}}}},"/scenarios-shared/{scenarioId}/{sharedScenarioId}":{"get":{"tags":["Scenarios shared"],"summary":"Get shared scenario","description":"Get shared scenario detail by ID.","security":[{"token":["scenarios-shared:read"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"sharedScenarioId","in":"path","schema":{"type":"string","minLength":11,"maxLength":11},"description":"Shared Scenario ID","example":"a1B2c3D4e5F","required":true}],"responses":{"200":{"description":"Shared scenario detail","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioShared":{"type":"object","properties":{"id":{"type":"string"},"scenarioId":{"type":"integer"},"authorId":{"type":"integer"},"isEnabled":{"type":"boolean"},"origin":{"type":"string","nullable":true},"titleOriginal":{"type":"string"},"title":{"type":"string"},"descriptionShort":{"type":"string","nullable":true},"descriptionLong":{"type":"string","nullable":true},"thumbnailUrl":{"type":"string","nullable":true},"shareUrl":{"type":"string"},"shareUrlCardinal":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"}}}}},"example":{"scenarioShared":{"id":"a1B2c3D4e5F","scenarioId":112,"authorId":42,"isEnabled":true,"origin":"eu1.make.com","titleOriginal":"My awesome automation","title":"My awesome automation","descriptionShort":"Short description of the automation.","descriptionLong":"Detailed description of the automation.","thumbnailUrl":"https://cdn.example.com/abc123.jpg","shareUrl":"https://www.make.com/scenarios/shared/a1B2c3D4e5F","shareUrlCardinal":"https://cardinal.make.com/scenarios/shared/a1B2c3D4e5F","createdAt":"2024-09-01T12:00:00.000Z","updated":"2024-09-02T08:30:00.000Z"}}}}}}},"patch":{"tags":["Scenarios shared"],"summary":"Update shared scenario","description":"Updates a shared scenario by ID by passing new values in the request body. Any property that is not provided will be left unchanged.","security":[{"token":["scenarios-shared:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"sharedScenarioId","in":"path","schema":{"type":"string","minLength":11,"maxLength":11},"description":"Shared Scenario ID","example":"a1B2c3D4e5F","required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":40},"descriptionShort":{"type":"string","maxLength":260,"nullable":true},"descriptionLong":{"type":"string","maxLength":2000,"nullable":true},"isEnabled":{"type":"boolean"}}},"example":{"title":"My awesome automation (updated)","descriptionShort":"Short description of the automation.","descriptionLong":"Detailed description of the automation.","isEnabled":false}}}},"responses":{"200":{"description":"Shared scenario updated","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioShared":{"type":"object","properties":{"id":{"type":"string"},"scenarioId":{"type":"integer"},"authorId":{"type":"integer"},"isEnabled":{"type":"boolean"},"origin":{"type":"string","nullable":true},"titleOriginal":{"type":"string"},"title":{"type":"string"},"descriptionShort":{"type":"string","nullable":true},"descriptionLong":{"type":"string","nullable":true},"thumbnailUrl":{"type":"string","nullable":true},"shareUrl":{"type":"string"},"shareUrlCardinal":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"}}}}},"example":{"scenarioShared":{"id":"a1B2c3D4e5F","scenarioId":112,"authorId":42,"isEnabled":false,"origin":"eu1.make.com","titleOriginal":"My awesome automation","title":"My awesome automation (updated)","descriptionShort":"Short description of the automation.","descriptionLong":"Detailed description of the automation.","thumbnailUrl":"https://cdn.example.com/abc123.jpg","shareUrl":"https://www.make.com/scenarios/shared/a1B2c3D4e5F","shareUrlCardinal":"https://cardinal.make.com/scenarios/shared/a1B2c3D4e5F","createdAt":"2024-09-01T12:00:00.000Z","updated":"2024-09-03T10:00:00.000Z"}}}}}}},"delete":{"tags":["Scenarios shared"],"summary":"Delete shared scenario","description":"Deletes a shared scenario and returns the ID in the response.","security":[{"token":["scenarios-shared:write"]}],"parameters":[{"description":"The ID of the scenario. You can get the `scenarioId` with the [List scenarios](/api-reference/scenarios/get--scenarios.md) API call.","name":"scenarioId","in":"path","schema":{"type":"integer"},"example":112,"required":true},{"name":"sharedScenarioId","in":"path","schema":{"type":"string","minLength":11,"maxLength":11},"description":"Shared Scenario ID","example":"a1B2c3D4e5F","required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioShared":{"type":"object","properties":{"id":{"type":"string"}}}}},"example":{"scenarioShared":{"id":"a1B2c3D4e5F"}}}}}}}},"/scenario-labels":{"get":{"tags":["Scenario labels"],"summary":"List team labels","description":"Retrieves the colour-coded labels owned by a team, sorted by name (case-insensitive) ascending. Each label carries a `scenariosCount` — the number of non-trashed scenarios in the team that currently carry it.","security":[{"token":["scenarios:read"]}],"parameters":[{"name":"teamId","in":"query","required":true,"schema":{"type":"integer","minimum":1},"description":"The team (company) whose labels are listed.","example":112}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"colour":{"type":"string","description":"Fixed palette semantic token name; the UI maps each token to its hex value.","enum":["white","neutral","brand","info","success","warning","danger","pink"]},"scope":{"type":"string","description":"Label visibility tier exposed by the web API. Only team labels are supported in this version.","enum":["team"]},"teamId":{"type":"integer","description":"The team (company) that owns the label."},"description":{"type":"string","nullable":true},"createdBy":{"type":"integer","nullable":true},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time","nullable":true}}},{"type":"object","properties":{"scenariosCount":{"type":"integer","minimum":0,"description":"Number of non-trashed scenarios in the team carrying this label."}}}]}}}},"example":{"labels":[{"id":42,"name":"Acme","colour":"brand","scope":"team","teamId":112,"description":"Acme client work","createdBy":7,"created":"2026-06-24T08:00:00.000Z","updated":null,"scenariosCount":3}]}}}}}},"post":{"tags":["Scenario labels"],"summary":"Create team label","description":"Creates a new team label. Requires `scenario edit` on the team. Label names are unique (case-insensitive) within a team.","security":[{"token":["scenarios:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["teamId","name","colour"],"properties":{"teamId":{"type":"integer","minimum":1},"name":{"type":"string","minLength":1,"maxLength":30},"colour":{"type":"string","description":"Fixed palette semantic token name; the UI maps each token to its hex value.","enum":["white","neutral","brand","info","success","warning","danger","pink"]},"description":{"type":"string","maxLength":500}}},"example":{"teamId":112,"name":"Acme","colour":"brand","description":"Acme client work"}}}},"responses":{"200":{"description":"Label created","content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"colour":{"type":"string","description":"Fixed palette semantic token name; the UI maps each token to its hex value.","enum":["white","neutral","brand","info","success","warning","danger","pink"]},"scope":{"type":"string","description":"Label visibility tier exposed by the web API. Only team labels are supported in this version.","enum":["team"]},"teamId":{"type":"integer","description":"The team (company) that owns the label."},"description":{"type":"string","nullable":true},"createdBy":{"type":"integer","nullable":true},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time","nullable":true}}}}}}}},"409":{"description":"A team label with the same name already exists."}}}},"/scenario-labels/{labelId}":{"patch":{"tags":["Scenario labels"],"summary":"Update team label","description":"Renames, re-colours, or re-describes a team label. Requires `scenario edit` on the label's team. Every chip using the label updates at once.","security":[{"token":["scenarios:write"]}],"parameters":[{"name":"labelId","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","minProperties":1,"properties":{"name":{"type":"string","minLength":1,"maxLength":30},"colour":{"type":"string","description":"Fixed palette semantic token name; the UI maps each token to its hex value.","enum":["white","neutral","brand","info","success","warning","danger","pink"]},"description":{"type":"string","maxLength":500,"nullable":true}}},"example":{"name":"Needs review","colour":"warning"}}}},"responses":{"200":{"description":"Label updated","content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"colour":{"type":"string","description":"Fixed palette semantic token name; the UI maps each token to its hex value.","enum":["white","neutral","brand","info","success","warning","danger","pink"]},"scope":{"type":"string","description":"Label visibility tier exposed by the web API. Only team labels are supported in this version.","enum":["team"]},"teamId":{"type":"integer","description":"The team (company) that owns the label."},"description":{"type":"string","nullable":true},"createdBy":{"type":"integer","nullable":true},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time","nullable":true}}}}}}}},"401":{"description":"Authentication failed, the token lacks `scenarios:write`, or an organization-bound token cannot access the label."},"404":{"description":"For an unbound caller, the label does not exist or the caller cannot edit its team."},"409":{"description":"A team label with the same name already exists."}}},"delete":{"tags":["Scenario labels"],"summary":"Delete team label","description":"Deletes a team label. Requires `scenario edit` on the label's team. Removes the label from every scenario it was assigned to.","security":[{"token":["scenarios:write"]}],"parameters":[{"name":"labelId","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Label deleted","content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"object","properties":{"id":{"type":"integer"}}}}}}}},"401":{"description":"Authentication failed, the token lacks `scenarios:write`, or an organization-bound token cannot access the label."},"404":{"description":"For an unbound caller, the label does not exist or the caller cannot edit its team."}}}},"/scenario-labels/assign-scenarios":{"post":{"tags":["Scenario labels"],"summary":"Assign labels to scenarios","description":"Assigns every accepted team label to every accepted scenario in one transaction. The raw request accepts up to 100 label IDs and 1,000 scenario IDs before duplicate IDs are removed. Missing, non-team, and different-team labels are rejected with the same `IM013` response. Missing and different-team scenarios are rejected with `IM002`; trashed scenarios in the requested team are rejected with `IM301`. Existing assignments are accepted no-ops. A processed request returns `200` even when every resource is rejected.","security":[{"token":["scenarios:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["teamId","labelIds","scenarioIds"],"properties":{"teamId":{"type":"integer","format":"int32","minimum":1,"maximum":2147483647,"description":"Team whose labels and scenarios are being mutated."},"labelIds":{"type":"array","minItems":1,"maxItems":100,"description":"Label IDs to process. The raw limit is enforced before duplicate IDs are removed. Each distinct ID is processed once.","items":{"type":"integer","format":"int32","minimum":1,"maximum":2147483647}},"scenarioIds":{"type":"array","minItems":1,"maxItems":1000,"description":"Scenario IDs to process. The raw limit is enforced before duplicate IDs are removed. Each distinct ID is processed once. Together with the 100-label limit, this bounds one request to 100,000 label-scenario pairs.","items":{"type":"integer","format":"int32","minimum":1,"maximum":2147483647}}}},"examples":{"mixedResults":{"summary":"Assign two labels while rejecting one label and one scenario","value":{"teamId":112,"labelIds":[42,43,44],"scenarioIds":[1201,1202]}}}}}},"responses":{"200":{"description":"The valid Cartesian subset was processed atomically; inspect the rejection arrays and summary.","content":{"application/json":{"schema":{"type":"object","required":["rejectedLabels","rejectedScenarios","summary"],"properties":{"rejectedLabels":{"type":"array","description":"Rejected distinct label IDs in first-occurrence request order.","items":{"type":"object","required":["labelId","code","detail"],"properties":{"labelId":{"type":"integer","format":"int32","minimum":1,"maximum":2147483647},"code":{"type":"string","description":"Always `IM013`; missing, non-team, and different-team labels are indistinguishable.","enum":["IM013"]},"detail":{"type":"string"}}}},"rejectedScenarios":{"type":"array","description":"Rejected distinct scenario IDs in first-occurrence request order.","items":{"type":"object","required":["scenarioId","code","detail"],"properties":{"scenarioId":{"type":"integer","format":"int32","minimum":1,"maximum":2147483647},"code":{"type":"string","description":"`IM002` when a scenario is missing or belongs to another team; `IM301` for a trashed scenario in the requested team.","enum":["IM002","IM301"]},"detail":{"type":"string"}}}},"summary":{"type":"object","required":["labels","scenarios","changed"],"properties":{"labels":{"type":"object","required":["total","accepted","rejected"],"properties":{"total":{"type":"integer","minimum":0,"description":"Number of distinct requested IDs after duplicate IDs are removed."},"accepted":{"type":"integer","minimum":0},"rejected":{"type":"integer","minimum":0}}},"scenarios":{"type":"object","required":["total","accepted","rejected"],"properties":{"total":{"type":"integer","minimum":0,"description":"Number of distinct requested IDs after duplicate IDs are removed."},"accepted":{"type":"integer","minimum":0},"rejected":{"type":"integer","minimum":0}}},"changed":{"type":"integer","minimum":0,"description":"Number of label-scenario relationships actually inserted or deleted."}}}}},"examples":{"mixedResults":{"summary":"One label and one scenario were rejected","value":{"rejectedLabels":[{"labelId":44,"code":"IM013","detail":"Label not found."}],"rejectedScenarios":[{"scenarioId":1202,"code":"IM002","detail":"Insufficient rights."}],"summary":{"labels":{"total":3,"accepted":2,"rejected":1},"scenarios":{"total":2,"accepted":1,"rejected":1},"changed":2}}}}}}},"400":{"description":"The body is invalid, or scenario labels are disabled (`IM903`).","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"invalidLabelIds":{"summary":"No label IDs were supplied","value":{"message":"Bad Request","code":"SC400","suberrors":[{"message":"Expected array length to be greater or equal to 1","name":"ValidationError"}]}}}}}},"401":{"description":"Authentication failed or the token lacks `scenarios:write` (`IM001`).","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"message":"Access denied","code":"IM001","detail":"Required scope: scenarios:write"}}}}}},"403":{"description":"The caller cannot edit scenarios in the requested team, or cannot access the `/admin` route.","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"teamPermissionDenied":{"summary":"The caller lacks team-level scenario edit permission","value":{"message":"Insufficient rights.","code":"IM002","detail":"Insufficient rights."}},"adminAccessDenied":{"summary":"The caller cannot access the admin route","value":{"message":"Permission denied","code":"SC403","detail":"Forbidden."}}}}}}}}},"/scenario-labels/unassign-scenarios":{"post":{"tags":["Scenario labels"],"summary":"Remove labels from scenarios","description":"Removes every accepted team label from every accepted scenario in one transaction. The raw request accepts up to 100 label IDs and 1,000 scenario IDs before duplicate IDs are removed. Missing, non-team, and different-team labels are rejected with the same `IM013` response. Missing and different-team scenarios are rejected with `IM002`; trashed scenarios in the requested team are rejected with `IM301`. Absent assignments are accepted no-ops. A processed request returns `200` even when every resource is rejected.","security":[{"token":["scenarios:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["teamId","labelIds","scenarioIds"],"properties":{"teamId":{"type":"integer","format":"int32","minimum":1,"maximum":2147483647,"description":"Team whose labels and scenarios are being mutated."},"labelIds":{"type":"array","minItems":1,"maxItems":100,"description":"Label IDs to process. The raw limit is enforced before duplicate IDs are removed. Each distinct ID is processed once.","items":{"type":"integer","format":"int32","minimum":1,"maximum":2147483647}},"scenarioIds":{"type":"array","minItems":1,"maxItems":1000,"description":"Scenario IDs to process. The raw limit is enforced before duplicate IDs are removed. Each distinct ID is processed once. Together with the 100-label limit, this bounds one request to 100,000 label-scenario pairs.","items":{"type":"integer","format":"int32","minimum":1,"maximum":2147483647}}}},"examples":{"mixedResults":{"summary":"Remove two labels while rejecting one label and one scenario","value":{"teamId":112,"labelIds":[42,43,44],"scenarioIds":[1201,1202]}}}}}},"responses":{"200":{"description":"The valid Cartesian subset was processed atomically; inspect the rejection arrays and summary.","content":{"application/json":{"schema":{"type":"object","required":["rejectedLabels","rejectedScenarios","summary"],"properties":{"rejectedLabels":{"type":"array","description":"Rejected distinct label IDs in first-occurrence request order.","items":{"type":"object","required":["labelId","code","detail"],"properties":{"labelId":{"type":"integer","format":"int32","minimum":1,"maximum":2147483647},"code":{"type":"string","description":"Always `IM013`; missing, non-team, and different-team labels are indistinguishable.","enum":["IM013"]},"detail":{"type":"string"}}}},"rejectedScenarios":{"type":"array","description":"Rejected distinct scenario IDs in first-occurrence request order.","items":{"type":"object","required":["scenarioId","code","detail"],"properties":{"scenarioId":{"type":"integer","format":"int32","minimum":1,"maximum":2147483647},"code":{"type":"string","description":"`IM002` when a scenario is missing or belongs to another team; `IM301` for a trashed scenario in the requested team.","enum":["IM002","IM301"]},"detail":{"type":"string"}}}},"summary":{"type":"object","required":["labels","scenarios","changed"],"properties":{"labels":{"type":"object","required":["total","accepted","rejected"],"properties":{"total":{"type":"integer","minimum":0,"description":"Number of distinct requested IDs after duplicate IDs are removed."},"accepted":{"type":"integer","minimum":0},"rejected":{"type":"integer","minimum":0}}},"scenarios":{"type":"object","required":["total","accepted","rejected"],"properties":{"total":{"type":"integer","minimum":0,"description":"Number of distinct requested IDs after duplicate IDs are removed."},"accepted":{"type":"integer","minimum":0},"rejected":{"type":"integer","minimum":0}}},"changed":{"type":"integer","minimum":0,"description":"Number of label-scenario relationships actually inserted or deleted."}}}}},"examples":{"mixedResults":{"summary":"One label and one scenario were rejected","value":{"rejectedLabels":[{"labelId":44,"code":"IM013","detail":"Label not found."}],"rejectedScenarios":[{"scenarioId":1202,"code":"IM002","detail":"Insufficient rights."}],"summary":{"labels":{"total":3,"accepted":2,"rejected":1},"scenarios":{"total":2,"accepted":1,"rejected":1},"changed":2}}}}}}},"400":{"description":"The body is invalid, or scenario labels are disabled (`IM903`).","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"invalidScenarioIds":{"summary":"No scenario IDs were supplied","value":{"message":"Bad Request","code":"SC400","suberrors":[{"message":"Expected array length to be greater or equal to 1","name":"ValidationError"}]}}}}}},"401":{"description":"Authentication failed or the token lacks `scenarios:write` (`IM001`).","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"message":"Access denied","code":"IM001","detail":"Required scope: scenarios:write"}}}}}},"403":{"description":"The caller cannot edit scenarios in the requested team, or cannot access the `/admin` route.","content":{"application/json":{"schema":{"type":"object","required":["message","code"],"properties":{"message":{"type":"string","description":"Localized summary for the error code."},"code":{"type":"string","description":"Stable Make API error code."},"detail":{"type":"string","description":"Request-specific detail when the error safely exposes one."},"suberrors":{"type":"array","description":"Individual validation failures, when request validation reports them.","items":{"type":"object","required":["message","name"],"properties":{"message":{"type":"string"},"name":{"type":"string"}}}}}},"examples":{"teamPermissionDenied":{"summary":"The caller lacks team-level scenario edit permission","value":{"message":"Insufficient rights.","code":"IM002","detail":"Insufficient rights."}},"adminAccessDenied":{"summary":"The caller cannot access the admin route","value":{"message":"Permission denied","code":"SC403","detail":"Forbidden."}}}}}}}}},"/scenario-labels/{labelId}/scenarios/{scenarioId}":{"post":{"tags":["Scenario labels"],"summary":"Assign label to scenario","description":"Assigns a team label to a single scenario. A team label may only be applied to scenarios in that same team. Idempotent.","security":[{"token":["scenarios:write"]}],"parameters":[{"name":"labelId","in":"path","required":true,"schema":{"type":"integer","minimum":1}},{"name":"scenarioId","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Label assigned","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioLabel":{"type":"object","properties":{"labelId":{"type":"integer"},"scenarioId":{"type":"integer"}}}}}}}},"401":{"description":"Authentication failed, the token lacks `scenarios:write`, or an organization-bound token cannot access the label."},"403":{"description":"Insufficient rights — the user lacks scenario-edit permission, the scenario does not exist or is not accessible, or a label visible to the caller belongs to a different team than the scenario."},"404":{"description":"For an unbound caller, the label does not exist or the caller cannot edit its team."}}},"delete":{"tags":["Scenario labels"],"summary":"Remove label from scenario","description":"Removes a team label from a single scenario. Idempotent.","security":[{"token":["scenarios:write"]}],"parameters":[{"name":"labelId","in":"path","required":true,"schema":{"type":"integer","minimum":1}},{"name":"scenarioId","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Label removed","content":{"application/json":{"schema":{"type":"object","properties":{"scenarioLabel":{"type":"object","properties":{"labelId":{"type":"integer"},"scenarioId":{"type":"integer"}}}}}}}},"401":{"description":"Authentication failed, the token lacks `scenarios:write`, or an organization-bound token cannot access the label."},"403":{"description":"Insufficient rights — the user lacks scenario-edit permission, the scenario does not exist or is not accessible, or a label visible to the caller belongs to a different team than the scenario."},"404":{"description":"For an unbound caller, the label does not exist or the caller cannot edit its team."}}}},"/sdk/apps":{"get":{"tags":["SDK Apps"],"summary":"List Apps","description":"Retrieves a collection of all apps available to the authenticated user.","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"opensource","in":"query","schema":{"type":"boolean"},"description":"If set to `true`, this parameter returns apps available to all users. If set to `false`, it retrieves the apps available to the authenticated user."},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["name","label","description","version","versionFull","beta","theme","public","modules","approved","inReview","changes","opensource","origin"]}},"description":"Specifies the group of values to return. For example, you may want to retrieve only the names of the available apps.","example":"name"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"apps":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"version":{"type":"integer"},"versionFull":{"type":"string"},"beta":{"type":"boolean"},"description":{"type":"string"},"theme":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"in_review":{"type":"boolean"},"modules":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"type":{"type":"integer"},"public":{"type":"boolean"}}}},"opensource":{"type":"boolean"},"changes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"table":{"type":"string"},"name":{"type":"string"},"column":{"type":"string"}}}}}}}}},"examples":{"list":{"summary":"List","value":{"apps":[{"name":"custom-app-1","label":"Ding","version":1,"beta":true},{"name":"model","label":"MODEL","version":1,"beta":false},{"name":"postman-test-app-1","label":"Postman Test App","version":1,"beta":true},{"name":"postman-test-app-2-1","label":"Postman Test App","version":1,"beta":true},{"name":"postman-test-app-3-1","label":"Postman Test App","version":1,"beta":true},{"name":"postman-test-app-4-1","label":"Postman Test App","version":1,"beta":true},{"name":"postman-test-app-5-1","label":"Postman Test App","version":1,"beta":true},{"name":"testovaci-lokalni-appka-1","label":"Testovací Lokální Appka","version":1,"beta":false}]}}}}}}}},"post":{"tags":["SDK Apps"],"summary":"Create App","description":"Creates a new app with data passed in the request body. In the response, it returns all details of the created app.","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"app":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer"},"beta":{"type":"boolean"},"theme":{"type":"string","format":"color"},"language":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"global":{"type":"boolean"},"countries":{"type":"array","items":{}},"created":{"type":"string","format":"date-time"},"manifestVersion":{"type":"integer"}}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"app":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"version":{"type":"integer"},"theme":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"}}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}":{"get":{"tags":["SDK Apps"],"summary":"Get App","security":[{"token":["sdk-apps:read"]}],"description":"","parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["name","label","description","theme","version","versionFull","beta","base","docs","language","public","approved","opensource","global","countries","changes","created","compile","compiledName","compilationError","inReview","manifestVersion","inviteToken","groups","installSpec","install","ipmRepo","flags","ipmTags","origin"]}},"description":"Specifies the group of values to return."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"app":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer"},"beta":{"type":"boolean"},"theme":{"type":"string","format":"color"},"language":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"global":{"type":"boolean"},"countries":{"type":"array","items":{}},"created":{"type":"string","format":"date-time"},"manifestVersion":{"type":"integer"}}}}},"examples":{"get-app":{"summary":"Get App","value":{"app":{"name":"postman-test-app-1","label":"Postman Test App","description":"This is a testing app from Postman","version":1,"versionFull":"1.0.0","beta":true,"theme":"#ff00ff","language":"en","public":false,"approved":false,"opensource":false,"global":true,"countries":[],"created":"2019-12-18T11:55:31.655Z","manifestVersion":2,"changes":[],"compile":false,"compiledName":null,"compilationError":null,"inReview":false,"inviteToken":"token","ipmRepo":"https://ipm.make.com","origin":"eu2.make.com"}}}}}}}}},"patch":{"tags":["SDK Apps"],"summary":"Patch App","security":[{"token":["sdk-apps:write"]}],"description":"","requestBody":{"content":{"application/json":{"schema":{"type":"object"},"example":{"audience":"countries","description":"Hey there, Charlie!","countries":["us","uk","cz"],"label":"Multiverse","theme":"#AABBCC","language":"en"}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"app":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer"},"theme":{"type":"string","format":"color"},"public":{"type":"boolean"},"approved":{"type":"boolean"}}}}},"examples":{"patch-app":{"summary":"Patch App","value":{"app":{"name":"beta-13-3","label":"Multiverse","description":"Hey there, Charlie!","version":1,"theme":"#aabbcc","public":false,"approved":false}}}}}}}}},"delete":{"tags":["SDK Apps"],"summary":"Delete App","security":[{"token":["sdk-apps:write"]}],"description":"","parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"app":{"type":"string"}}},"examples":{"delete-app":{"summary":"Delete App","value":{"app":"postman-test-app-1"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/clone":{"post":{"tags":["SDK Apps"],"summary":"Clone App","security":[{"token":["sdk-apps:read"]}],"description":"","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"newName":{"type":"string"},"newVersion":{"type":"integer"}}},"example":{"newName":"beta-1","newVersion":2}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"app":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer"},"beta":{"type":"boolean"},"theme":{"type":"string","format":"color"},"language":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"global":{"type":"boolean"},"countries":{"type":"array","items":{}},"created":{"type":"string","format":"date-time"},"manifestVersion":{"type":"integer"}}}}},"examples":{"clone-app":{"summary":"Clone App","value":{"app":{"name":"postman-test-app-1","label":"Postman Test App","description":"This is a testing app from Postman","version":1,"beta":true,"theme":"#ff00ff","language":"en","public":false,"approved":false,"global":true,"countries":null,"created":"2019-12-18T11:55:31.655Z","manifestVersion":2}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/clone-major":{"post":{"tags":["SDK Apps"],"summary":"Clone App Major Version","security":[{"token":["sdk-apps:write"]}],"description":"Clones the app to the next major version with the same app name. Requires the \"allow_apps\" feature flag to be enabled.","parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"app":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer"},"beta":{"type":"boolean"},"theme":{"type":"string","format":"color"},"language":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"global":{"type":"boolean"},"countries":{"type":"array","items":{}},"created":{"type":"string","format":"date-time"},"manifestVersion":{"type":"integer"}}}}},"examples":{"clone-app-major":{"summary":"Clone App Major Version","value":{"app":{"name":"postman-test-app-1","label":"Postman Test App","version":2,"theme":"#ff00ff","public":false,"approved":false}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/review":{"get":{"tags":["SDK Apps"],"summary":"Get App Review","security":[{"token":["sdk-apps:read"]}],"description":"","parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","properties":{"contactName":{"type":"string"},"contactEmail":{"type":"string","format":"email"},"reviewerName":{"type":"string"},"reviewerEmail":{"type":"string","format":"email"},"codeStatus":{"type":"string"},"testStatus":{"type":"string"},"docsStatus":{"type":"string"}}}}},"examples":{"get-app-review":{"summary":"Get App Review","value":{"review":{"contactName":"admin","contactEmail":"admin@make.cloud","reviewerName":null,"reviewerEmail":null,"codeStatus":null,"testStatus":null,"docsStatus":null}}}}}}}}},"post":{"tags":["SDK Apps"],"summary":"Request Review","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true},{"name":"all","in":"query","schema":{"type":"boolean"},"example":"true"},{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"application/json"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"requested":{"type":"boolean"}}},"examples":{"request-review":{"summary":"Request Review","value":{"requested":true}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/review/form":{"put":{"tags":["SDK Apps"],"summary":"Submit App Review Form","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"testingScenarios":{"type":"object"}}},"example":{"testingScenarios":{"hohoho":"https://www.santa.com"}}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"form":{"type":"object","properties":{"testingScenarios":{"type":"object","properties":{"hohoho":{"type":"string","format":"url"}}}}}}},"examples":{"submit-app-review-form":{"summary":"Submit App Review Form","value":{"form":{"testingScenarios":{"hohoho":"https://www.santa.com"}}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/events-log":{"get":{"tags":["SDK Apps"],"summary":"Get App Events Log","security":[{"token":["sdk-apps:read"]}],"description":"","parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","appName","appVersion","message","detail","authorId","createdAt"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"appName":{"type":"string"},"appVersion":{"type":"integer"},"message":{"type":"string"},"detail":{"type":"object"},"authorId":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"}}}}}},"examples":{"get-app-events-log":{"summary":"Get App Events Log","value":{"events":[{"id":2,"appName":"webhook-zmetek","appVersion":1,"message":"Approval requested.","detail":{},"authorId":1,"createdAt":"2021-03-01T13:07:20.852Z"},{"id":1,"appName":"webhook-zmetek","appVersion":1,"message":"App has been published.","detail":{},"authorId":1,"createdAt":"2021-03-01T12:36:52.837Z"}]}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/common":{"get":{"tags":["SDK Apps"],"summary":"Get App Common","description":"Get app client id and client secret.","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"description":"The numeric version of the app.","required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"description":"The numeric version of the app.","required":true,"example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"},"examples":{"default":{"summary":"Get App Common","value":{"clientId":123456,"clientSecret":"secret"}}}}}}}},"put":{"tags":["SDK Apps"],"summary":"Set app common data","description":"Sets the common data for the app based on the parameters passed in the request body. In the response, it returns all details of common data. Common data usually contain sensitive information like API keys or API secrets and these details are shared across all modules.","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"The JSON object containing the common data."},"example":{"clientId":123456,"clientSecret":"secret"}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"description":"The name of the app.","required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"description":"The app version.","required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"default":{"summary":"Set App Common","value":{"changed":true}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/readme":{"get":{"tags":["SDK Apps"],"summary":"Get App Docs","security":[{"token":["sdk-apps:read"]}],"description":"","parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true},{"name":"all","in":"query","schema":{"type":"boolean"},"example":"true"}],"responses":{"200":{"description":"Successful response","content":{"text/markdown":{"schema":{"type":"string"},"examples":{"get-app-docs":{"summary":"Get App Docs","value":"# Hey There"}}}}}}},"put":{"tags":["SDK Apps"],"summary":"Set App Docs","security":[{"token":["sdk-apps:write"]}],"description":"","requestBody":{"content":{"text/markdown":{"schema":{"type":"string","example":"I see you."}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"all","in":"query","schema":{"type":"boolean"},"example":"true"},{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"text/markdown"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"set-app-docs":{"summary":"Set App Docs","value":{"changed":true}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/base":{"post":{"tags":["SDK Apps"],"summary":"Set App Base","security":[{"token":["sdk-apps:write"]}],"description":"Set app base configuration.\n","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}}}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}}}}}]}},"application/jsonc":{"schema":{"anyOf":[{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}}}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}}}}}]}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true},{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"application/jsonc"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"change":{"type":"object"}}},"examples":{"set-app-base":{"summary":"Set App Base","value":{"change":{}}}}}}}}},"patch":{"tags":["SDK Apps"],"summary":"Patch App Base","security":[{"token":["sdk-apps:write"]}],"description":"Patch app base configuration.\n","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}}}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}}}}}]}},"application/jsonc":{"schema":{"anyOf":[{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}}}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}}}}}]}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true},{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"application/jsonc"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"change":{"type":"object"}}},"examples":{"patch-app-base":{"summary":"Patch App Base","value":{"change":{}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/groups":{"put":{"tags":["SDK Apps"],"summary":"Set App Section","security":[{"token":["sdk-apps:write"]}],"description":"Available sections: base, groups, install, installSpec<br />\n","requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"type":"string"},"modules":{"type":"array","items":{"type":"string"}}},"required":["label","modules"]}}},"application/jsonc":{"schema":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"type":"string"},"modules":{"type":"array","items":{"type":"string"}}},"required":["label","modules"]}}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"change":{"type":"object"}}},"examples":{"set-app-section":{"summary":"Set App Section","value":{"change":{}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/install":{"put":{"tags":["SDK Apps"],"summary":"Set App Section","security":[{"token":["sdk-apps:write"]}],"description":"Available sections: base, groups, install, installSpec<br />\n","requestBody":{"content":{"application/json":{"schema":{}},"application/jsonc":{"schema":{}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"change":{"type":"object"}}},"examples":{"set-app-section":{"summary":"Set App Section","value":{"change":{}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/{SDK_appVisibility}":{"post":{"tags":["SDK Apps"],"summary":"Set App Visibility","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true},{"name":"SDK_appVisibility","in":"path","schema":{"type":"string","enum":["public","private"]},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"public":{"type":"boolean"},"inviteToken":{"type":"string"}}},"examples":{"set-app-visibility":{"summary":"Set App Visibility","value":{"public":true,"inviteToken":"token"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/opensource":{"post":{"tags":["SDK Apps"],"summary":"Set App Opensource","security":[{"token":["sdk-apps:write"]}],"description":"beta, stable<br />\n","requestBody":{"content":{}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true},{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"text/plain"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"set-app-opensource":{"summary":"Set App Opensource","value":{"changed":true}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/closedsource":{"post":{"tags":["SDK Apps"],"summary":"Set App ClosedSource","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"set-app-closedsource":{"summary":"Set App ClosedSource","value":{"changed":true}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/changes/{SDK_changeId}":{"get":{"tags":["SDK Apps"],"summary":"Get Change","security":[{"token":["sdk-apps:read"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"change":{"type":"object","properties":{"id":{"type":"integer"},"group":{"type":"string"},"code":{"type":"string"},"oldValue":{"type":"string"},"newValue":{"type":"string"}}}}},"examples":{"getChange":{"value":{"change":{"id":5,"group":"text","code":"text","oldValue":"text","newValue":"text"}}}}}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true},{"name":"SDK_changeId","in":"path","schema":{"type":"integer"},"required":true}]}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/commit":{"post":{"tags":["SDK Apps"],"summary":"Commit Changes","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"notify":{"type":"boolean"},"changeIds":{"type":"array","items":{"type":"integer"}}}},"example":{"message":"Just a small tweak","notify":false,"changeIds":[1,2]}}}},"responses":{"200":{"description":"Successful response","content":{"text/plain":{"schema":{"type":"boolean"},"example":true}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true},{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"application/json"}]}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/rollback":{"post":{"tags":["SDK Apps"],"summary":"Rollback Changes","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"changeIds":{"type":"array","items":{"type":"integer"}}}},"example":{"changeIds":[1,2]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"rolledBack":{"type":"boolean"}}},"examples":{"rollback-changes":{"summary":"Rollback Changes","value":{"rolledBack":true}}}}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true},{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"application/json"}]}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/icon/{SDK_appIconSize}":{"get":{"tags":["SDK Apps"],"summary":"Get App Logo","security":[{"token":["sdk-apps:read"]}],"responses":{"200":{"description":"Successful response","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true},{"name":"SDK_appIconSize","in":"path","schema":{"type":"integer"},"required":true}]}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/icon":{"put":{"tags":["SDK Apps"],"summary":"Set App Logo","security":[{"token":["sdk-apps:write"]}],"requestBody":{"description":"The PNG image to upload.","required":true,"content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"set-app-icon":{"summary":"Set App Logo","value":{"changed":true}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/uninstall":{"post":{"tags":["SDK Apps"],"summary":"Uninstall App from Organization","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"integer"}}},"example":{"organizationId":1}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"appVersion":{"type":"integer"},"organizationId":{"type":"integer"},"installedAt":{"type":"string","format":"date-time"},"userId":{"type":"string"},"theme":{"type":"string"}}}}}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true}]}},"/sdk/apps/themes":{"get":{"x-internal":true,"tags":["SDK Apps"],"summary":"All verified and custom apps returned with theme color.","security":[{"token":["sdk-apps:read","apps:read"]}],"parameters":[{"name":"names","in":"query","schema":{"type":"string"},"required":true,"description":"Names of apps to return divided by commas - for example ?names=test-app-6astv7,custom-app-0b5p1w. \nThe names parameter may contain maximum 500 values.\n"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"apps":{"type":"array","items":{"type":"object","properties":{"name":{"description":"app name","type":"string"},"label":{"description":"app label (title)","type":"string"},"theme":{"description":"hex code of color theme for app","type":"string"},"isCompiled":{"description":"Indicates whether the app is compiled (true) or not (false).\nThis is relevant for custom apps that are not compiled yet.\n","type":"boolean"},"modules":{"description":"Labels of the app's modules, keyed by module name. Populated only when the corresponding\nentry in `names` uses the `appName:moduleName` format; `null` otherwise.\n","type":"object","nullable":true,"additionalProperties":{"type":"object","properties":{"label":{"type":"string"}}}}}}}}},"examples":{"meta":{"value":{"apps":[{"name":"my-custom-app-mn8qq6","label":"My Custom App","theme":"#cccccc","isCompiled":false,"modules":null},{"name":"airtable","label":"Airtable","theme":"#18bfff","isCompiled":true,"modules":null},{"name":"datastore","label":"Data store","theme":"#2f8cbb","isCompiled":true,"modules":{"InsertIntoTable":{"label":"Insert into Table"}}}]}}}}}}}}},"/sdk/apps/invites/{SDK_appInviteToken}":{"get":{"tags":["SDK Apps / Invites"],"summary":"Get App Invite","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appInviteToken","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appInvite":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"theme":{"type":"string","format":"color"},"created":{"type":"string","format":"date-time"},"access":{"type":"boolean"},"manifestBasic":{"type":"object","properties":{"icon":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"theme":{"type":"string","format":"color"},"groups":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"modules":{"type":"array","items":{"type":"string"}}}}},"public":{"type":"boolean"},"actions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"responder":{"type":"boolean"},"description":{"type":"string"},"supportsAgent":{"type":"boolean"}}}},"version":{"type":"string"},"searches":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"description":{"type":"string"},"supportsAgent":{"type":"boolean"}}}},"triggers":{"type":"array","items":{"type":"object","properties":{"acid":{"type":"boolean"},"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"listener":{"type":"boolean"},"description":{"type":"string"},"supportsAgent":{"type":"boolean"}}}},"description":{"type":"string"},"supportsAgent":{"type":"boolean"}}},"language":{"type":"string"},"installable":{"type":"array","items":{"type":"integer"}}}}}},"examples":{"get-app-invite":{"summary":"Get App Invite","value":{"appInvite":{"name":"invite-example","label":"Example","theme":"#2f8cbb","created":"2021-01-06T12:31:47.261Z","access":true,"manifestBasic":{"icon":"/img/apps/invite-example.png","name":"app#invite-example","label":"Example","theme":"#2f8cbb","groups":[{"label":"Objects","modules":["watchObjects","searchObjects","createObject","deleteObject"]},{"label":"Notifications","modules":["watchNotifications","resolveNotification"]},{"label":"Other","modules":["makeAnAPICall","makeGQLAPICall"]}],"public":true,"actions":[{"name":"makeAnAPICall","label":"Make an API Call","public":true,"approved":false,"responder":false,"description":"Performs an arbitrary authorized API request."},{"name":"createObject","label":"Create Object","public":true,"approved":false,"responder":false,"description":"Creates a new Object."},{"name":"deleteObject","label":"Delete Object","public":true,"approved":false,"responder":false,"description":"Deletes the given Object."},{"name":"resolveNotification","label":"Resolves a Notification","public":true,"approved":false,"responder":true,"description":"Responds to the Notification."},{"name":"makeGQLAPICall","label":"Make a GraphQL Call","public":true,"approved":false,"responder":false,"description":"Performs arbitrary GraphQL Query."}],"version":"1.0.0","searches":[{"name":"searchObjects","label":"Search Objects","public":true,"approved":false,"description":"Searches for Objects."}],"triggers":[{"acid":true,"name":"watchObjects","label":"Watch Objects","public":true,"approved":false,"listener":false,"description":"Triggers when a new Object is created."},{"acid":true,"name":"watchNotifications","label":"Watch Notifications","public":true,"approved":false,"listener":true,"description":"Triggers when a new Notification is received."}],"description":null},"language":"en","installable":[]}}}}}}}}},"post":{"tags":["SDK Apps / Invites"],"summary":"Accept App Invite","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"organizationIds":{"type":"array","items":{"type":"integer"}}}},"example":{"organizationIds":[13]}}}},"parameters":[{"name":"SDK_appInviteToken","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appInvite":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"theme":{"type":"string","format":"color"},"created":{"type":"string","format":"date-time"},"access":{"type":"boolean"},"manifestBasic":{"type":"object","properties":{"icon":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"theme":{"type":"string","format":"color"},"groups":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"modules":{"type":"array","items":{"type":"string"}}}}},"public":{"type":"boolean"},"actions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"responder":{"type":"boolean"},"description":{"type":"string"},"supportsAgent":{"type":"boolean"}}}},"version":{"type":"string"},"searches":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"description":{"type":"string"},"supportsAgent":{"type":"boolean"}}}},"triggers":{"type":"array","items":{"type":"object","properties":{"acid":{"type":"boolean"},"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"listener":{"type":"boolean"},"description":{"type":"string"},"supportsAgent":{"type":"boolean"}}}},"description":{"type":"string"},"supportsAgent":{"type":"boolean"}}},"language":{"type":"string"},"version":{"type":"integer"}}}}},"examples":{"accept-app-invite":{"summary":"Accept App Invite","value":{"appInvite":{"name":"custom-app-1","label":"Update App 2","theme":"#caffee","created":"2019-12-18T11:31:25.803Z","access":true,"manifestBasic":{"icon":"/img/apps/custom-app-1.png","name":"app#custom-app-1","label":"Update App 2","theme":"#caffee","groups":[{"label":"Other","modules":["postmanModule5","getEntity","getEntity2","getEntity3"]}],"public":true,"actions":[{"public":true,"approved":true,"name":"name","label":"label","description":"description","responder":false,"supportsAgent":false}],"version":"1.0.0","searches":[{"public":true,"approved":true,"name":"name","label":"label","description":"description","supportsAgent":false}],"triggers":[{"public":true,"approved":false,"name":"name","label":"label","description":"description","acid":false,"listener":true,"supportsAgent":true}],"description":"This is app.","supportsAgent":true},"language":"en","version":1}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules":{"post":{"tags":["SDK Apps / Modules"],"summary":"Create Module","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"typeId":{"type":"integer","enum":[1,4,9,10,11,12],"default":4,"description":"Module type id. Allowed values:\n - 1 = TRIGGER (Trigger - polling) Use if you wish to watch for any changes in your app/service. Examples are Watch a New Book, which will be triggered whenever a new book has been added to the library.\n - 4 = ACTION Use if the API endpoint returns a single response. Examples are Create a book, Delete a book or Get a Book.\n - 9 = SEARCH Use if the API endpoint returns multiple items. An example is List Books that will find specific books according to search criteria.\n - 10 = CONVERGER (Instant Trigger / webhook) Use if the API endpoint has a webhook available (dedicated or shared). Example is Watch a New Event.\n - 11 = HITL (Responder) Use if you need to send a processed data back to a webhook.\n - 12 = RETURNER (Universal) Use if you want to enable users to perform an arbitrary API call to the service. Examples are Make an API Call and Execute a GraphQL Query.\n"},"label":{"type":"string"},"description":{"type":"string"},"moduleInitMode":{"type":"string","enum":["blank","example","module"],"default":"blank","description":"Module init mode:\n * `blank` -  Creates a new blank module (code is empty).\n * `example` - Creates a module from a `model` app (which contains the example codes).\n * `module` - Creates module from existing user's module.\n"},"moduleInitSource":{"type":"string","description":"Required when `moduleInitMode` is `module`. Specifies the name of the source module to clone."},"connection":{"type":"string","description":"The name of the connection to use.","nullable":true},"webhook":{"type":"string","description":"The name of the webhook to use.","nullable":true},"crud":{"type":"string","description":"The CRUD operation type.","nullable":true}},"required":["name","typeId"]},"example":{"name":"getEntity","typeId":4,"label":"Get Entity","description":"Retrieves the given entity.","moduleInitMode":"blank","connection":null,"webhook":null,"crud":null}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appModule":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"typeId":{"type":"integer"},"crud":{"type":"string"},"connection":{"type":"string"},"webhook":{"type":"string"}}}}},"examples":{"create-module":{"summary":"Create Module","value":{"appModule":{"name":"getEntity","label":"Get Entity","description":"Retrieves the given entity.","typeId":4,"crud":null,"connection":null,"webhook":null}}}}}}}}},"get":{"tags":["SDK Apps / Modules"],"summary":"List App Modules","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appModules":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"typeId":{"type":"integer"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"archived":{"type":"boolean"},"crud":{"type":"string"}}}}}},"examples":{"list-app-modules":{"summary":"List App Modules","value":{"appModules":[{"name":"postmanModule5","label":"BezVisKam","typeId":1,"public":false,"approved":false,"archived":false,"description":"Bleeeeee","crud":"read"},{"name":"getEntity","label":"Get Entity","typeId":4,"public":false,"approved":false,"archived":false,"description":"Retrieves the given entity.","crud":null}]}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules/{SDK_moduleName}":{"get":{"tags":["SDK Apps / Modules"],"summary":"Get Module","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appModule":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"typeId":{"type":"integer"},"public":{"type":"boolean"},"approved":{"type":"boolean"},"archived":{"type":"boolean"},"crud":{"type":"string"},"connection":{"type":"string"},"altConnection":{"type":"string"},"webhook":{"type":"string"}}}}},"examples":{"get-module":{"summary":"Get Module","value":{"appModule":{"name":"getEntity","label":"Get Entity","description":"Retrieves the given entity.","typeId":4,"public":false,"approved":false,"archived":false,"crud":null,"connection":null,"altConnection":null,"webhook":null}}}}}}}}},"patch":{"tags":["SDK Apps / Modules"],"summary":"Patch Module","security":[{"token":["sdk-apps:write"]}],"description":"Updates a module.<br />\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"},"description":{"type":"string"},"connection":{"type":"string"}}},"example":{"label":"Get Order","description":"Retrieves the order by its id.","connection":"charlie-1"}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appModule":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"typeId":{"type":"integer"},"crud":{"type":"string"},"connection":{"type":"string"},"altConnection":{"type":"string"},"webhook":{"type":"string"}}}}},"examples":{"patch-module":{"summary":"Patch Module","value":{"appModule":{"name":"getEntity","label":"Get Order","description":"Retrieves the order by its id.","typeId":4,"crud":null,"connection":"charlie-1","altConnection":null,"webhook":null}}}}}}}}},"delete":{"tags":["SDK Apps / Modules"],"summary":"Delete Module","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appModule":{"type":"string"}}},"examples":{"delete-module":{"summary":"Delete Module","value":{"appModule":"getEntity"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules/{SDK_moduleName}/api":{"put":{"tags":["SDK Apps / Modules"],"summary":"Set Module Section","security":[{"token":["sdk-apps:write"]}],"description":"Available sections: api, epoch, parameters, expect, interface, samples, scope<br />\n","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"respond":{"additionalProperties":false,"type":"object","properties":{"type":{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"}]},"status":{"anyOf":[{"minimum":100,"maximum":999,"type":"integer"},{"type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]}}},"verification":{"additionalProperties":false,"type":"object","properties":{"condition":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"respond":{"additionalProperties":false,"type":"object","properties":{"type":{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"}]},"status":{"anyOf":[{"minimum":100,"maximum":999,"type":"integer"},{"type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]}}}}},"repeat":{"description":"Repeats a request under a certain condition with a predefined delay in milliseconds. The maximum number of repeats can be bounded by the repeat.limit.","type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","type":"string"},"delay":{"description":"Specifies the delay in milliseconds.","type":"number"},"limit":{"description":"Specifies the maximum number of iterations.","type":"number"}}}}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"respond":{"additionalProperties":false,"type":"object","properties":{"type":{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"}]},"status":{"anyOf":[{"minimum":100,"maximum":999,"type":"integer"},{"type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]}}},"verification":{"additionalProperties":false,"type":"object","properties":{"condition":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"respond":{"additionalProperties":false,"type":"object","properties":{"type":{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"}]},"status":{"anyOf":[{"minimum":100,"maximum":999,"type":"integer"},{"type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]}}}}},"repeat":{"description":"Repeats a request under a certain condition with a predefined delay in milliseconds. The maximum number of repeats can be bounded by the repeat.limit.","type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","type":"string"},"delay":{"description":"Specifies the delay in milliseconds.","type":"number"},"limit":{"description":"Specifies the maximum number of iterations.","type":"number"}}}}}}]}},"application/jsonc":{"schema":{"anyOf":[{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"respond":{"additionalProperties":false,"type":"object","properties":{"type":{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"}]},"status":{"anyOf":[{"minimum":100,"maximum":999,"type":"integer"},{"type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]}}},"verification":{"additionalProperties":false,"type":"object","properties":{"condition":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"respond":{"additionalProperties":false,"type":"object","properties":{"type":{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"}]},"status":{"anyOf":[{"minimum":100,"maximum":999,"type":"integer"},{"type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]}}}}},"repeat":{"description":"Repeats a request under a certain condition with a predefined delay in milliseconds. The maximum number of repeats can be bounded by the repeat.limit.","type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","type":"string"},"delay":{"description":"Specifies the delay in milliseconds.","type":"number"},"limit":{"description":"Specifies the maximum number of iterations.","type":"number"}}}}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"baseUrl":{"minLength":1,"maxLength":512,"description":"Base URL for endpoints starting with /","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"description":"This directive specifies the HTTP method that will be used to issue the request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies headers that will be sent with the request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the query string to use when making the request.","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"This directive specifies the request body.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"The temp directive specifies an object, which can be used to create custom temporary variables. It also creates a temp variable in IML, through which you then access your variables. The temp collection is not persisted and will be lost after the module is done executing.","type":"object","properties":{}},"condition":{"default":true,"description":"This directive specifies whether to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"description":"Specifies the module output when the condition is false.","anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"response":{"additionalProperties":false,"description":"Response parsing configuration","type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"trigger":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"enum":["date"],"type":"string"},{"enum":["id"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"order":{"anyOf":[{"enum":["asc"],"type":"string"},{"enum":["desc"],"type":"string"},{"enum":["unordered"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"id":{"maxLength":512,"type":"string"},"date":{"maxLength":512,"type":"string"}},"required":["type","order","id"]},"data":{"additionalProperties":{},"description":"Data saved to connection","type":"object","properties":{}},"metadata":{"additionalProperties":true,"description":"Connection metadata","type":"object","properties":{"value":{"maxLength":512,"type":"string"},"type":{"anyOf":[{"enum":["text"],"type":"string"},{"enum":["email"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"uid":{"description":"User remote service ID","anyOf":[{"type":"string"},{"type":"number"}]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"wrapper":{"default":"{{output}}","description":"Output post-processing wrapper","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"expires":{"minLength":1,"maxLength":512,"description":"Key expiration time for refresh triggers","type":"string"}}},"output":{"anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"respond":{"additionalProperties":false,"type":"object","properties":{"type":{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"}]},"status":{"anyOf":[{"minimum":100,"maximum":999,"type":"integer"},{"type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]}}},"verification":{"additionalProperties":false,"type":"object","properties":{"condition":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"respond":{"additionalProperties":false,"type":"object","properties":{"type":{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"}]},"status":{"anyOf":[{"minimum":100,"maximum":999,"type":"integer"},{"type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]}}}}},"repeat":{"description":"Repeats a request under a certain condition with a predefined delay in milliseconds. The maximum number of repeats can be bounded by the repeat.limit.","type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","type":"string"},"delay":{"description":"Specifies the delay in milliseconds.","type":"number"},"limit":{"description":"Specifies the maximum number of iterations.","type":"number"}}}}}}]}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"qs":{"type":"object"},"body":{"type":"object"},"headers":{"type":"object"},"response":{"type":"object","properties":{"iterate":{"type":"string"},"trigger":{"type":"object","properties":{"id":{"type":"string"},"date":{"type":"string"},"type":{"type":"string"},"order":{"type":"string"}}},"output":{"type":"string"},"limit":{"type":"string"}}}}},"examples":{"set-module-section":{"summary":"Set Module Section","value":{"url":"/api/users","method":"GET","qs":{},"body":{},"headers":{},"response":{"iterate":"{{body.users}}","trigger":{"id":"{{item.id}}","date":"{{item.created}}","type":"string","format":"date","order":"desc"},"output":"{{item}}","limit":"{{parameters.limit}}"}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules/{SDK_moduleName}/epoch":{"put":{"tags":["SDK Apps / Modules"],"summary":"Set Module Section","security":[{"token":["sdk-apps:write"]}],"description":"Available sections: api, epoch, parameters, expect, interface, samples, scope<br />\n","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Query string parameters","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"condition":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"repeat":{"description":"Repeats a request under a certain condition with a predefined delay in milliseconds. The maximum number of repeats can be bounded by the repeat.limit.","type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","type":"string"},"delay":{"description":"Specifies the delay in milliseconds.","type":"number"},"limit":{"description":"Specifies the maximum number of iterations.","type":"number"}}},"response":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"description":"Epoch module output format","additionalProperties":true,"type":"object","properties":{"date":{},"label":{}},"required":["date","label"]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}}},"required":["output"]}},"required":["response"]}},"application/jsonc":{"schema":{"additionalProperties":false,"type":"object","properties":{"url":{"minLength":1,"maxLength":512,"description":"Request URL","type":"string"},"encodeUrl":{"default":true,"description":"This directive controls the encoding of URLs. It is on by default, so if you have any special characters in your URL, they will be automatically encoded. But there might be situations where you don't want your URL to be encoded automatically, or you want to control what parts of the URL are encoded. To do this, set this flag to false.","type":"boolean"},"method":{"anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Request headers","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"Query string parameters","type":"object","properties":{}},"ca":{"maxLength":8192,"description":"Custom Certificate Authority","type":"string"},"body":{"description":"Request body","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"type":{"anyOf":[{"default":"json","anyOf":[{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["multipart/form-data"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["binary"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"condition":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"anyOf":[{"type":"boolean"},{"type":"string"}]},"default":{"anyOf":[{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]}},"required":["condition"]}]},"aws":{"additionalProperties":false,"description":"Helper directive, that will simplify generating AWS signatures.","type":"object","properties":{"key":{"maxLength":512,"description":"AWS key","type":"string"},"secret":{"maxLength":512,"description":"AWS secret","type":"string"},"session":{"maxLength":512,"description":"AWS session. Note that this only works for services that require session as part of the canonical string.","type":"string"},"bucket":{"maxLength":512,"description":"AWS bucket, unless you're specifying your bucket as part of the path, or the request doesn't use a bucket.","type":"string"},"sign_version":{"default":"2","description":"AWS sign version","anyOf":[{"enum":["2"],"type":"string"},{"enum":["4"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}}},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}},"gzip":{"default":false,"description":"Add an Accept-Encoding header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response.","type":"boolean"},"followRedirects":{"default":true,"description":"This directive specifies whether to follow GET HTTP 3xx responses as redirects or never.","type":"boolean"},"followAllRedirects":{"default":true,"description":"This directive specifies whether to follow non-GET HTTP 3xx responses as redirects or never.","type":"boolean"},"log":{"additionalProperties":false,"description":"This directive specifies logging options for both the request and the response.","type":"object","properties":{"sanitize":{"description":"An array of paths to sanitize when logging request or response.","type":"array","items":{"type":"string"}}}},"pagination":{"additionalProperties":false,"description":"Directive to specify how to process paginated responses.","type":"object","properties":{"mergeWithParent":{"default":true,"description":"This directive specifies if to merge pagination parameters with the original request parameters, or not.","type":"boolean"},"url":{"minLength":1,"maxLength":512,"description":"This directive specifies the URL that will be called when the pagination request is executed.","type":"string"},"method":{"description":"This directive specifies the HTTP method to be used when executing the pagination request.","anyOf":[{"default":"GET","anyOf":[{"enum":["GET"],"type":"string"},{"enum":["POST"],"type":"string"},{"enum":["PUT"],"type":"string"},{"enum":["PATCH"],"type":"string"},{"enum":["DELETE"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"headers":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request headers to be used when executing the pagination request.","type":"object","properties":{}},"qs":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"},{"type":"array","items":{}}]},"description":"This directive specifies the request query string parameters to be used when executing the pagination request.","type":"object","properties":{}},"body":{"description":"This directive specifies the request body when the request method is anything but GET to be used when executing the pagination request.","anyOf":[{"type":"object","properties":{}},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"string"}]},"condition":{"description":"This directive specifies whether to execute the pagination request or not.","anyOf":[{"type":"boolean"},{"type":"string"}]}}},"repeat":{"description":"Repeats a request under a certain condition with a predefined delay in milliseconds. The maximum number of repeats can be bounded by the repeat.limit.","type":"object","properties":{"condition":{"description":"Specifies if to execute the request or not.","type":"string"},"delay":{"description":"Specifies the delay in milliseconds.","type":"number"},"limit":{"description":"Specifies the maximum number of iterations.","type":"number"}}},"response":{"additionalProperties":false,"type":"object","properties":{"type":{"anyOf":[{"additionalProperties":{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"type":"object","properties":{}},{"anyOf":[{"default":"automatic","anyOf":[{"enum":["automatic"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["urlencoded"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["raw"],"type":"string"},{"enum":["string"],"type":"string"},{"enum":["binary"],"type":"string"},{"enum":["xml"],"type":"string"}]},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]}]},"valid":{"default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"condition":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}}}]},"limit":{"anyOf":[{"type":"number"},{"type":"string"}]},"error":{"anyOf":[{"description":"The error directive specifies the error type and the error message to show the user.","anyOf":[{"maxLength":1024,"type":"string"},{"required":["message"],"additionalProperties":{"required":["message"],"additionalProperties":false,"type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}},"description":"Error object. You can specify custom errors for different status codes by using the status code as the key (e.g., \"404\", \"500\").","type":"object","properties":{"message":{"description":"An expression that parses an error message from response body.","maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}}}]},{"additionalProperties":{"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]},"type":"object","properties":{"message":{"maxLength":1024,"type":"string"},"type":{"default":"RuntimeError","anyOf":[{"enum":["RuntimeError"],"type":"string"},{"enum":["DataError"],"type":"string"},{"enum":["RateLimitError"],"type":"string"},{"enum":["OutOfSpaceError"],"type":"string"},{"enum":["ConnectionError"],"type":"string"},{"enum":["InvalidConfigurationError"],"type":"string"},{"enum":["InvalidAccessTokenError"],"type":"string"},{"enum":["IncompleteDataError"],"type":"string"},{"enum":["DuplicateDataError"],"type":"string"}]}},"required":["message"]}]},"iterate":{"anyOf":[{"maxLength":512,"type":"string"},{"additionalProperties":false,"type":"object","properties":{"container":{"maxLength":512,"type":"string"},"condition":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["container"]}]},"temp":{"additionalProperties":{},"description":"Temporary variables accessible during execution","type":"object","properties":{}},"output":{"description":"Epoch module output format","additionalProperties":true,"type":"object","properties":{"date":{},"label":{}},"required":["date","label"]},"oauth":{"additionalProperties":false,"description":"Helper directive, that will simplify generating an OAuth1 Authorization headers.","type":"object","properties":{"consumer_key":{"maxLength":512,"description":"Your consumer key.","type":"string"},"consumer_secret":{"maxLength":512,"description":"Your consumer secret.","type":"string"},"private_key":{"maxLength":512,"description":"Instead of consumer_secret you can specify a private_key string in PEM format.","type":"string"},"token":{"maxLength":512,"description":"An expression that parses the oauth_token string.","type":"string"},"token_secret":{"maxLength":512,"description":"An expression that parses the oauth_token_secret string.","type":"string"},"verifier":{"maxLength":512,"description":"An expression that parses the oauth_verifier string.","type":"string"},"signature_method":{"default":"HMAC-SHA1","description":"Specifies the desired method to use when calculating the signature.","anyOf":[{"enum":["HMAC-SHA1"],"type":"string"},{"enum":["RSA-SHA1"],"type":"string"},{"enum":["PLAINTEXT"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"transport_method":{"default":"header","description":"Specifies how OAuth parameters are sent: via query params, header or in a POST body.","anyOf":[{"enum":["query"],"type":"string"},{"enum":["body"],"type":"string"},{"enum":["header"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"body_hash":{"default":true,"description":"To use Request Body Hash, you can either manually generate it, or you can set this directive to true and the body hash will be generated automatically.","anyOf":[{"type":"string"},{"type":"boolean"}]}}}},"required":["output"]}},"required":["response"]}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"qs":{"type":"object"},"body":{"type":"object"},"headers":{"type":"object"},"response":{"type":"object","properties":{"iterate":{"type":"string"},"trigger":{"type":"object","properties":{"id":{"type":"string"},"date":{"type":"string"},"type":{"type":"string"},"order":{"type":"string"}}},"output":{"type":"string"},"limit":{"type":"string"}}}}},"examples":{"set-module-section":{"summary":"Set Module Section","value":{"url":"/api/users","method":"GET","qs":{},"body":{},"headers":{},"response":{"iterate":"{{body.users}}","trigger":{"id":"{{item.id}}","date":"{{item.created}}","type":"string","format":"date","order":"desc"},"output":"{{item}}","limit":"{{parameters.limit}}"}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules/{SDK_moduleName}/interface":{"put":{"tags":["SDK Apps / Modules"],"summary":"Set Module Section","security":[{"token":["sdk-apps:write"]}],"description":"Available sections: api, epoch, parameters, expect, interface, samples, scope<br />\n","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"minLength":1,"maxLength":128,"type":"string"},"label":{"minLength":1,"maxLength":256,"type":"string"},"help":{"minLength":1,"type":"string"},"type":{"anyOf":[{"enum":["any"],"type":"string"},{"enum":["array"],"type":"string"},{"enum":["boolean"],"type":"string"},{"enum":["buffer"],"type":"string"},{"enum":["cert"],"type":"string"},{"enum":["collection"],"type":"string"},{"enum":["color"],"type":"string"},{"enum":["date"],"type":"string"},{"enum":["email"],"type":"string"},{"enum":["filename"],"type":"string"},{"enum":["folder"],"type":"string"},{"enum":["file"],"type":"string"},{"enum":["filter"],"type":"string"},{"enum":["hidden"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["integer"],"type":"string"},{"enum":["uinteger"],"type":"string"},{"enum":["number"],"type":"string"},{"enum":["password"],"type":"string"},{"enum":["path"],"type":"string"},{"enum":["pkey"],"type":"string"},{"enum":["port"],"type":"string"},{"enum":["select"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["time"],"type":"string"},{"enum":["timestamp"],"type":"string"},{"enum":["timezone"],"type":"string"},{"enum":["url"],"type":"string"},{"enum":["uuid"],"type":"string"},{"enum":["banner"],"type":"string"},{"enum":["udt"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"semantic":{"minLength":1,"type":"string"},"default":{"anyOf":[{"type":"boolean"},{"type":"array","items":{}},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]},"advanced":{"type":"boolean"},"required":{"type":"boolean"},"grouped":{"type":"boolean"},"dynamic":{"type":"boolean"},"multiline":{"type":"boolean"},"sort":{"type":"string"},"sequence":{"type":"boolean"},"schema":{},"tags":{"anyOf":[{"enum":["strip"],"type":"string"},{"enum":["stripall"],"type":"string"},{"enum":["escape"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"coder":{"type":"boolean"},"multiple":{"type":"boolean"},"visible":{"type":"string"},"convert":{"additionalProperties":false,"type":"object","properties":{"type":{"type":"string"},"format":{"type":"string"},"timezone":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"names":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"}},"required":["name"]}}]}},"required":["type"]},"editable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"enabled":{"type":"boolean"},"help":{"minLength":1,"type":"string"}},"required":["enabled"]}]},"mappable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"help":{"minLength":1,"type":"string"}},"required":["help"]}]},"time":{"type":"boolean"},"rpc":{"additionalProperties":false,"type":"object","properties":{"url":{"type":"string"},"label":{"type":"string"},"parameters":{"type":"array","items":{}}},"required":["url","label"]},"mode":{"anyOf":[{"enum":["edit"],"type":"string"},{"enum":["choose"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"labels":{"additionalProperties":{},"type":"object","properties":{}},"metadata":{"additionalProperties":{},"type":"object","properties":{}},"spec":{},"codepage":{"type":"string"},"pattern":{"type":"string"},"nested":{},"options":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"store":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}}]},"label":{"type":"string"},"value":{"type":"string"},"default":{"type":"string"},"learning":{"type":"boolean"},"placeholder":{"anyOf":[{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"label":{"type":"string"},"nested":{}}}]},"nested":{},"operators":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},"logic":{"type":"string"},"scope":{"anyOf":[{"type":"array","items":{"type":"string"}},{"additionalProperties":{"type":"array","items":{"type":"string"}},"type":"object","properties":{}}]},"ids":{"type":"boolean"},"showRoot":{"type":"boolean"},"singleLevel":{"type":"boolean"}}}]},"extension":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"validate":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"max":{"type":"number"},"min":{"type":"number"},"minItems":{"type":"integer"},"maxItems":{"type":"integer"},"pattern":{"type":"string"},"enum":{"type":"array","items":{}}}}]},"title":{"type":"string"},"text":{"type":"string"},"closable":{"type":"boolean"},"theme":{"type":"string"},"badge":{"type":"string"}},"required":["type"]}},{"type":"string"}]}},"application/jsonc":{"schema":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"minLength":1,"maxLength":128,"type":"string"},"label":{"minLength":1,"maxLength":256,"type":"string"},"help":{"minLength":1,"type":"string"},"type":{"anyOf":[{"enum":["any"],"type":"string"},{"enum":["array"],"type":"string"},{"enum":["boolean"],"type":"string"},{"enum":["buffer"],"type":"string"},{"enum":["cert"],"type":"string"},{"enum":["collection"],"type":"string"},{"enum":["color"],"type":"string"},{"enum":["date"],"type":"string"},{"enum":["email"],"type":"string"},{"enum":["filename"],"type":"string"},{"enum":["folder"],"type":"string"},{"enum":["file"],"type":"string"},{"enum":["filter"],"type":"string"},{"enum":["hidden"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["integer"],"type":"string"},{"enum":["uinteger"],"type":"string"},{"enum":["number"],"type":"string"},{"enum":["password"],"type":"string"},{"enum":["path"],"type":"string"},{"enum":["pkey"],"type":"string"},{"enum":["port"],"type":"string"},{"enum":["select"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["time"],"type":"string"},{"enum":["timestamp"],"type":"string"},{"enum":["timezone"],"type":"string"},{"enum":["url"],"type":"string"},{"enum":["uuid"],"type":"string"},{"enum":["banner"],"type":"string"},{"enum":["udt"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"semantic":{"minLength":1,"type":"string"},"default":{"anyOf":[{"type":"boolean"},{"type":"array","items":{}},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]},"advanced":{"type":"boolean"},"required":{"type":"boolean"},"grouped":{"type":"boolean"},"dynamic":{"type":"boolean"},"multiline":{"type":"boolean"},"sort":{"type":"string"},"sequence":{"type":"boolean"},"schema":{},"tags":{"anyOf":[{"enum":["strip"],"type":"string"},{"enum":["stripall"],"type":"string"},{"enum":["escape"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"coder":{"type":"boolean"},"multiple":{"type":"boolean"},"visible":{"type":"string"},"convert":{"additionalProperties":false,"type":"object","properties":{"type":{"type":"string"},"format":{"type":"string"},"timezone":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"names":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"}},"required":["name"]}}]}},"required":["type"]},"editable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"enabled":{"type":"boolean"},"help":{"minLength":1,"type":"string"}},"required":["enabled"]}]},"mappable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"help":{"minLength":1,"type":"string"}},"required":["help"]}]},"time":{"type":"boolean"},"rpc":{"additionalProperties":false,"type":"object","properties":{"url":{"type":"string"},"label":{"type":"string"},"parameters":{"type":"array","items":{}}},"required":["url","label"]},"mode":{"anyOf":[{"enum":["edit"],"type":"string"},{"enum":["choose"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"labels":{"additionalProperties":{},"type":"object","properties":{}},"metadata":{"additionalProperties":{},"type":"object","properties":{}},"spec":{},"codepage":{"type":"string"},"pattern":{"type":"string"},"nested":{},"options":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"store":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}}]},"label":{"type":"string"},"value":{"type":"string"},"default":{"type":"string"},"learning":{"type":"boolean"},"placeholder":{"anyOf":[{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"label":{"type":"string"},"nested":{}}}]},"nested":{},"operators":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},"logic":{"type":"string"},"scope":{"anyOf":[{"type":"array","items":{"type":"string"}},{"additionalProperties":{"type":"array","items":{"type":"string"}},"type":"object","properties":{}}]},"ids":{"type":"boolean"},"showRoot":{"type":"boolean"},"singleLevel":{"type":"boolean"}}}]},"extension":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"validate":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"max":{"type":"number"},"min":{"type":"number"},"minItems":{"type":"integer"},"maxItems":{"type":"integer"},"pattern":{"type":"string"},"enum":{"type":"array","items":{}}}}]},"title":{"type":"string"},"text":{"type":"string"},"closable":{"type":"boolean"},"theme":{"type":"string"},"badge":{"type":"string"}},"required":["type"]}},{"type":"string"}]}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"qs":{"type":"object"},"body":{"type":"object"},"headers":{"type":"object"},"response":{"type":"object","properties":{"iterate":{"type":"string"},"trigger":{"type":"object","properties":{"id":{"type":"string"},"date":{"type":"string"},"type":{"type":"string"},"order":{"type":"string"}}},"output":{"type":"string"},"limit":{"type":"string"}}}}},"examples":{"set-module-section":{"summary":"Set Module Section","value":{"url":"/api/users","method":"GET","qs":{},"body":{},"headers":{},"response":{"iterate":"{{body.users}}","trigger":{"id":"{{item.id}}","date":"{{item.created}}","type":"string","format":"date","order":"desc"},"output":"{{item}}","limit":"{{parameters.limit}}"}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules/{SDK_moduleName}/parameters":{"put":{"tags":["SDK Apps / Modules"],"summary":"Set Module Section","security":[{"token":["sdk-apps:write"]}],"description":"Available sections: api, epoch, parameters, expect, interface, samples, scope<br />\n","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"minLength":1,"maxLength":128,"type":"string"},"label":{"minLength":1,"maxLength":256,"type":"string"},"help":{"minLength":1,"type":"string"},"type":{"anyOf":[{"enum":["any"],"type":"string"},{"enum":["array"],"type":"string"},{"enum":["boolean"],"type":"string"},{"enum":["buffer"],"type":"string"},{"enum":["cert"],"type":"string"},{"enum":["collection"],"type":"string"},{"enum":["color"],"type":"string"},{"enum":["date"],"type":"string"},{"enum":["email"],"type":"string"},{"enum":["filename"],"type":"string"},{"enum":["folder"],"type":"string"},{"enum":["file"],"type":"string"},{"enum":["filter"],"type":"string"},{"enum":["hidden"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["integer"],"type":"string"},{"enum":["uinteger"],"type":"string"},{"enum":["number"],"type":"string"},{"enum":["password"],"type":"string"},{"enum":["path"],"type":"string"},{"enum":["pkey"],"type":"string"},{"enum":["port"],"type":"string"},{"enum":["select"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["time"],"type":"string"},{"enum":["timestamp"],"type":"string"},{"enum":["timezone"],"type":"string"},{"enum":["url"],"type":"string"},{"enum":["uuid"],"type":"string"},{"enum":["banner"],"type":"string"},{"enum":["udt"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"semantic":{"minLength":1,"type":"string"},"default":{"anyOf":[{"type":"boolean"},{"type":"array","items":{}},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]},"advanced":{"type":"boolean"},"required":{"type":"boolean"},"grouped":{"type":"boolean"},"dynamic":{"type":"boolean"},"multiline":{"type":"boolean"},"sort":{"type":"string"},"sequence":{"type":"boolean"},"schema":{},"tags":{"anyOf":[{"enum":["strip"],"type":"string"},{"enum":["stripall"],"type":"string"},{"enum":["escape"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"coder":{"type":"boolean"},"multiple":{"type":"boolean"},"visible":{"type":"string"},"convert":{"additionalProperties":false,"type":"object","properties":{"type":{"type":"string"},"format":{"type":"string"},"timezone":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"names":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"}},"required":["name"]}}]}},"required":["type"]},"editable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"enabled":{"type":"boolean"},"help":{"minLength":1,"type":"string"}},"required":["enabled"]}]},"mappable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"help":{"minLength":1,"type":"string"}},"required":["help"]}]},"time":{"type":"boolean"},"rpc":{"additionalProperties":false,"type":"object","properties":{"url":{"type":"string"},"label":{"type":"string"},"parameters":{"type":"array","items":{}}},"required":["url","label"]},"mode":{"anyOf":[{"enum":["edit"],"type":"string"},{"enum":["choose"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"labels":{"additionalProperties":{},"type":"object","properties":{}},"metadata":{"additionalProperties":{},"type":"object","properties":{}},"spec":{},"codepage":{"type":"string"},"pattern":{"type":"string"},"nested":{},"options":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"store":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}}]},"label":{"type":"string"},"value":{"type":"string"},"default":{"type":"string"},"learning":{"type":"boolean"},"placeholder":{"anyOf":[{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"label":{"type":"string"},"nested":{}}}]},"nested":{},"operators":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},"logic":{"type":"string"},"scope":{"anyOf":[{"type":"array","items":{"type":"string"}},{"additionalProperties":{"type":"array","items":{"type":"string"}},"type":"object","properties":{}}]},"ids":{"type":"boolean"},"showRoot":{"type":"boolean"},"singleLevel":{"type":"boolean"}}}]},"extension":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"validate":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"max":{"type":"number"},"min":{"type":"number"},"minItems":{"type":"integer"},"maxItems":{"type":"integer"},"pattern":{"type":"string"},"enum":{"type":"array","items":{}}}}]},"title":{"type":"string"},"text":{"type":"string"},"closable":{"type":"boolean"},"theme":{"type":"string"},"badge":{"type":"string"}},"required":["type"]}},{"type":"string"}]}},"application/jsonc":{"schema":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"minLength":1,"maxLength":128,"type":"string"},"label":{"minLength":1,"maxLength":256,"type":"string"},"help":{"minLength":1,"type":"string"},"type":{"anyOf":[{"enum":["any"],"type":"string"},{"enum":["array"],"type":"string"},{"enum":["boolean"],"type":"string"},{"enum":["buffer"],"type":"string"},{"enum":["cert"],"type":"string"},{"enum":["collection"],"type":"string"},{"enum":["color"],"type":"string"},{"enum":["date"],"type":"string"},{"enum":["email"],"type":"string"},{"enum":["filename"],"type":"string"},{"enum":["folder"],"type":"string"},{"enum":["file"],"type":"string"},{"enum":["filter"],"type":"string"},{"enum":["hidden"],"type":"string"},{"enum":["json"],"type":"string"},{"enum":["integer"],"type":"string"},{"enum":["uinteger"],"type":"string"},{"enum":["number"],"type":"string"},{"enum":["password"],"type":"string"},{"enum":["path"],"type":"string"},{"enum":["pkey"],"type":"string"},{"enum":["port"],"type":"string"},{"enum":["select"],"type":"string"},{"enum":["text"],"type":"string"},{"enum":["time"],"type":"string"},{"enum":["timestamp"],"type":"string"},{"enum":["timezone"],"type":"string"},{"enum":["url"],"type":"string"},{"enum":["uuid"],"type":"string"},{"enum":["banner"],"type":"string"},{"enum":["udt"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"semantic":{"minLength":1,"type":"string"},"default":{"anyOf":[{"type":"boolean"},{"type":"array","items":{}},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}},{"type":"string"}]},"advanced":{"type":"boolean"},"required":{"type":"boolean"},"grouped":{"type":"boolean"},"dynamic":{"type":"boolean"},"multiline":{"type":"boolean"},"sort":{"type":"string"},"sequence":{"type":"boolean"},"schema":{},"tags":{"anyOf":[{"enum":["strip"],"type":"string"},{"enum":["stripall"],"type":"string"},{"enum":["escape"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"coder":{"type":"boolean"},"multiple":{"type":"boolean"},"visible":{"type":"string"},"convert":{"additionalProperties":false,"type":"object","properties":{"type":{"type":"string"},"format":{"type":"string"},"timezone":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"names":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"}},"required":["name"]}}]}},"required":["type"]},"editable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"enabled":{"type":"boolean"},"help":{"minLength":1,"type":"string"}},"required":["enabled"]}]},"mappable":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"help":{"minLength":1,"type":"string"}},"required":["help"]}]},"time":{"type":"boolean"},"rpc":{"additionalProperties":false,"type":"object","properties":{"url":{"type":"string"},"label":{"type":"string"},"parameters":{"type":"array","items":{}}},"required":["url","label"]},"mode":{"anyOf":[{"enum":["edit"],"type":"string"},{"enum":["choose"],"type":"string"},{"pattern":"^.*[{][{].*[}][}].*$","type":"string"}]},"labels":{"additionalProperties":{},"type":"object","properties":{}},"metadata":{"additionalProperties":{},"type":"object","properties":{}},"spec":{},"codepage":{"type":"string"},"pattern":{"type":"string"},"nested":{},"options":{"anyOf":[{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"store":{"anyOf":[{"type":"string"},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}},{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}}]},"label":{"type":"string"},"value":{"type":"string"},"default":{"type":"string"},"learning":{"type":"boolean"},"placeholder":{"anyOf":[{"type":"string"},{"additionalProperties":false,"type":"object","properties":{"label":{"type":"string"},"nested":{}}}]},"nested":{},"operators":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"options":{"type":"array","items":{"additionalProperties":false,"type":"object","properties":{"label":{"minLength":1,"maxLength":256,"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"boolean"},{"type":"integer"},{"type":"string","nullable":true},{"type":"number"},{"type":"object","properties":{}}]},"description":{"type":"string"},"nested":{},"default":{"type":"boolean"},"short":{"type":"string"}},"required":["value"]}}},"required":["label","options"]}},"logic":{"type":"string"},"scope":{"anyOf":[{"type":"array","items":{"type":"string"}},{"additionalProperties":{"type":"array","items":{"type":"string"}},"type":"object","properties":{}}]},"ids":{"type":"boolean"},"showRoot":{"type":"boolean"},"singleLevel":{"type":"boolean"}}}]},"extension":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"validate":{"anyOf":[{"type":"boolean"},{"additionalProperties":false,"type":"object","properties":{"max":{"type":"number"},"min":{"type":"number"},"minItems":{"type":"integer"},"maxItems":{"type":"integer"},"pattern":{"type":"string"},"enum":{"type":"array","items":{}}}}]},"title":{"type":"string"},"text":{"type":"string"},"closable":{"type":"boolean"},"theme":{"type":"string"},"badge":{"type":"string"}},"required":["type"]}},{"type":"string"}]}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"qs":{"type":"object"},"body":{"type":"object"},"headers":{"type":"object"},"response":{"type":"object","properties":{"iterate":{"type":"string"},"trigger":{"type":"object","properties":{"id":{"type":"string"},"date":{"type":"string"},"type":{"type":"string"},"order":{"type":"string"}}},"output":{"type":"string"},"limit":{"type":"string"}}}}},"examples":{"set-module-section":{"summary":"Set Module Section","value":{"url":"/api/users","method":"GET","qs":{},"body":{},"headers":{},"response":{"iterate":"{{body.users}}","trigger":{"id":"{{item.id}}","date":"{{item.created}}","type":"string","format":"date","order":"desc"},"output":"{{item}}","limit":"{{parameters.limit}}"}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules/{SDK_moduleName}/samples":{"put":{"tags":["SDK Apps / Modules"],"summary":"Set Module Section","security":[{"token":["sdk-apps:write"]}],"description":"Available sections: api, epoch, parameters, expect, interface, samples, scope<br />\n","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object","properties":{}}},"application/jsonc":{"schema":{"additionalProperties":{},"type":"object","properties":{}}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"qs":{"type":"object"},"body":{"type":"object"},"headers":{"type":"object"},"response":{"type":"object","properties":{"iterate":{"type":"string"},"trigger":{"type":"object","properties":{"id":{"type":"string"},"date":{"type":"string"},"type":{"type":"string"},"order":{"type":"string"}}},"output":{"type":"string"},"limit":{"type":"string"}}}}},"examples":{"set-module-section":{"summary":"Set Module Section","value":{"url":"/api/users","method":"GET","qs":{},"body":{},"headers":{},"response":{"iterate":"{{body.users}}","trigger":{"id":"{{item.id}}","date":"{{item.created}}","type":"string","format":"date","order":"desc"},"output":"{{item}}","limit":"{{parameters.limit}}"}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules/{SDK_moduleName}/scope":{"put":{"tags":["SDK Apps / Modules"],"summary":"Set Module Section","security":[{"token":["sdk-apps:write"]}],"description":"Available sections: api, epoch, parameters, expect, interface, samples, scope<br />\n","requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"minLength":1,"maxLength":512,"type":"string"}}},"application/jsonc":{"schema":{"type":"array","items":{"minLength":1,"maxLength":512,"type":"string"}}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"qs":{"type":"object"},"body":{"type":"object"},"headers":{"type":"object"},"response":{"type":"object","properties":{"iterate":{"type":"string"},"trigger":{"type":"object","properties":{"id":{"type":"string"},"date":{"type":"string"},"type":{"type":"string"},"order":{"type":"string"}}},"output":{"type":"string"},"limit":{"type":"string"}}}}},"examples":{"set-module-section":{"summary":"Set Module Section","value":{"url":"/api/users","method":"GET","qs":{},"body":{},"headers":{},"response":{"iterate":"{{body.users}}","trigger":{"id":"{{item.id}}","date":"{{item.created}}","type":"string","format":"date","order":"desc"},"output":"{{item}}","limit":"{{parameters.limit}}"}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules/{SDK_moduleName}/{SDK_moduleSection}":{"get":{"tags":["SDK Apps / Modules"],"summary":"Get Module Section","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleSection","in":"path","schema":{"type":"string","enum":["api","epoch","parameters","expect","interface","samples","scope"]},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"qs":{"type":"object","additionalProperties":{}},"body":{"type":"object","additionalProperties":{}},"headers":{"type":"object","additionalProperties":{}},"response":{"type":"object","properties":{"iterate":{"type":"string"},"trigger":{"type":"object","properties":{"id":{"type":"string"},"date":{"type":"string"},"type":{"type":"string"},"order":{"type":"string"}}},"output":{"type":"string"},"limit":{"type":"string"}}}}},"examples":{"get-module-section":{"summary":"Get Module Section","value":{"url":"/api/users","method":"GET","qs":{},"body":{},"headers":{},"response":{"iterate":"{{body.users}}","trigger":{"id":"{{item.id}}","date":"{{item.created}}","type":"string","format":"date","order":"desc"},"output":"{{item}}","limit":"{{parameters.limit}}"}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules/{SDK_moduleName}/{SDK_moduleVisibility}":{"post":{"tags":["SDK Apps / Modules"],"summary":"Set Module Visibility","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"example":{"changed":true}}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleVisibility","in":"path","schema":{"type":"string","enum":["public","private"]},"required":true}]}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules/{SDK_moduleName}/clone":{"post":{"tags":["SDK Apps / Modules"],"summary":"Clone Module","security":[{"token":["sdk-apps:write"]}],"description":"Creates a duplicate of a module.<br />\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"newName":{"type":"string"},"label":{"type":"string"}}},"example":{"newName":"apicek","label":"Testicek (clone)"}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"module":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"typeId":{"type":"integer"},"connection":{"type":"string"},"webhook":{"type":"string"},"crud":{"type":"string"}}}}},"examples":{"clone-module":{"summary":"Clone Module","value":{"module":{"name":"apicek","label":"Testicek (clone)","description":"Těstíčko.","typeId":4,"connection":"multiverse","webhook":null,"crud":null}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules/{SDK_moduleName}/{SDK_moduleDeprecation}":{"post":{"tags":["SDK Apps / Modules"],"summary":"Set Module Deprecation","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleDeprecation","in":"path","schema":{"type":"string","enum":["deprecate","undeprecate"]},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"set-module-deprecation":{"summary":"Set Module Deprecation","value":{"changed":true}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules/{SDK_moduleName}/{SDK_moduleArchiveStatus}":{"post":{"tags":["SDK Apps > Modules"],"summary":"Set Module Archive Status","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleArchiveStatus","in":"path","schema":{"type":"string","enum":["archive","unarchive"]},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"set-module-archive-status":{"summary":"Set Module Archive Status","value":{"changed":true}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/modules/{SDK_moduleName}/{SDK_moduleConsumable}":{"put":{"tags":["SDK Apps / Modules"],"summary":"Set Module Consumable","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_moduleName","in":"path","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"centicreditsFormula":{"type":"string"},"centicreditsFormulaDescription":{"type":"string"},"centicreditsFormulaDocumentationUrl":{"type":"string"},"centicreditsFormulaMeta":{"type":"string"}}},"example":{"centicreditsFormula":"1+1","centicreditsFormulaDescription":"A simple formula.","centicreditsFormulaDocumentationUrl":"https://example.com/docs","centicreditsFormulaMeta":"{}"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}}},"example":{"name":"the-module-name"}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/rpcs":{"get":{"tags":["SDK Apps / RPCs"],"summary":"List App RPCs","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"rpcs":{"type":"array","items":{}}}},"examples":{"list-app-rpcs":{"summary":"List App RPCs","value":{"rpcs":[]}}}}}}}},"post":{"tags":["SDK Apps / RPCs"],"summary":"Create RPC","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"connection":{"type":"string","nullable":true}}},"example":{"name":"listUsers","label":"List Users","connection":null}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appRpc":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"}}}}},"examples":{"create-rpc":{"summary":"Create RPC","value":{"appRpc":{"name":"listUsers","label":"List Users"}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/rpcs/{SDK_rpcName}":{"delete":{"tags":["SDK Apps / RPCs"],"summary":"Delete RPC","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_rpcName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appRpc":{"type":"string"}}},"examples":{"delete-rpc":{"summary":"Delete RPC","value":{"appRpc":"listUsers"}}}}}}}},"get":{"tags":["SDK Apps / RPCs"],"summary":"Get RPC","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_rpcName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appRpc":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"connection":{"type":"string"},"altConnection":{"type":"string"}}}}},"examples":{"get-rpc":{"summary":"Get RPC","value":{"appRpc":{"name":"listUsers","label":"List Users","connection":null,"altConnection":null}}}}}}}}},"patch":{"tags":["SDK Apps / RPCs"],"summary":"Patch RPC","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"},"connection":{"type":"string","nullable":true},"altConnection":{"type":"string","nullable":true}}},"example":{"label":"New RPC Label","connection":"new-connection"}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_rpcName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appRpc":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"connection":{"type":"string"},"altConnection":{"type":"string"}}}}},"examples":{"patch-rpc":{"summary":"Patch RPC","value":{"appRpc":{"name":"listUsers","label":"IDI","connection":null,"altConnection":null}}}}}}}}},"post":{"tags":["SDK Apps / RPCs"],"summary":"Test RPC","security":[{"token":["sdk-apps:write"]}],"description":"Tests the RPC<br />\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"utc-millisec"},"jidlo":{"type":"string"}}},"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"required":{"type":"boolean"}}}}}},"example":{"data":{"id":"1","jidlo":"Banana bread"},"schema":[{"name":"id","type":"integer","required":true},{"name":"jidlo","type":"text","required":true}]}}}},"responses":{"200":{"description":"Successful response"}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_rpcName","in":"path","schema":{"type":"string"},"required":true}]}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/rpcs/{SDK_rpcName}/{SDK_rpcSection}":{"get":{"tags":["SDK Apps / RPCs"],"summary":"Get RPC Section","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_rpcName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_rpcSection","in":"path","schema":{"type":"string","enum":["api","parameters"]},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"qs":{"type":"object"},"body":{"type":"object"},"headers":{"type":"object"},"response":{"type":"object","properties":{"iterate":{"type":"string"},"output":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}}}}}}},"examples":{"get-rpc-section":{"summary":"Get RPC Section","value":{"url":"/api/users","method":"GET","qs":{},"body":{},"headers":{},"response":{"iterate":"{{body.users}}","output":{"label":"{{item.name}}","value":"{{item.id}}"}}}}}}}}}},"put":{"tags":["SDK Apps / RPCs"],"summary":"Set RPC Section","security":[{"token":["sdk-apps:write"]}],"description":"Available sections: api, parameters<br />\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"qs":{"type":"object"},"body":{"type":"object"},"headers":{"type":"object"},"response":{"type":"object","properties":{"iterate":{"type":"string"},"output":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}}}}}}},"example":{"url":"/api/users","method":"GET","qs":{},"body":{},"headers":{},"response":{"iterate":"{{body.users}}","output":{"label":"{{item.name}}","value":"{{item.id}}"}}}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_rpcName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_rpcSection","in":"path","schema":{"type":"string","enum":["api","parameters"]},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"change":{"type":"object","properties":{"id":{"type":"integer"},"group":{"type":"string"},"code":{"type":"string"},"oldValue":{"type":"object"},"newValue":{"type":"object"}}}}},"examples":{"set-rpc-section":{"summary":"Set RPC Section","value":{"change":{"id":12345,"group":"apps_rpcs","code":"api","oldValue":{"url":"/api/users"},"newValue":{"url":"/api/v2/users"}}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/endpoints":{"get":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"List App Endpoints","description":"Lists the metadata of all endpoints defined on the given app version. The heavy section payloads (`api`, `scope`, `outputParameters`) are excluded by default and are fetched per section. Pass `includeInputSchema=true` to also include each endpoint's `inputParameters` (Forman schema DSL) in the listing. On an approved app with a pending (unreleased) edit to `inputParameters`, the value returned here is the live one, not the pending edit — fetch `GET .../endpoints/{endpoint}/inputParameters` for the up-to-date value.","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"includeInputSchema","in":"query","schema":{"type":"boolean","default":false},"description":"When true, each listed endpoint also includes its `inputParameters` (Forman schema DSL). Off by default because the payload can be large.","example":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appEndpoints":{"type":"array","items":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"Endpoint name. Unique within the app version, immutable after creation."},"label":{"type":"string"},"description":{"type":"string","nullable":true},"context":{"type":"string","nullable":true,"description":"Free-form context made available to AI agents calling the endpoint."},"annotations":{"type":"object","description":"MCP-inspired behavior hints. Only the known hints are persisted; unknown keys are stripped.","properties":{"readOnlyHint":{"type":"boolean"},"destructiveHint":{"type":"boolean"},"idempotentHint":{"type":"boolean"},"openWorldHint":{"type":"boolean"},"arbitraryCallHint":{"type":"boolean"}}},"attachedAccounts":{"type":"array","items":{"type":"string"},"description":"Names of the connections attached to the endpoint."},"public":{"type":"boolean"},"approved":{"type":"boolean"},"deprecated":{"type":"boolean"},"archived":{"type":"boolean","description":"Zone-only flag; never synchronized to HQ."},"centicreditsFormula":{"type":"string","nullable":true},"centicreditsFormulaDescription":{"type":"string","nullable":true},"centicreditsFormulaDocumentationUrl":{"type":"string","nullable":true},"centicreditsFormulaMeta":{"type":"string","nullable":true},"schemaVersion":{"type":"integer"},"rev":{"type":"integer","description":"Revision number, used for Swarm sync."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},{"type":"object","properties":{"inputParameters":{"type":"array","items":{"type":"object"},"description":"Input parameters in the Forman Schema DSL. Present only when `includeInputSchema=true`."}}}]}}}},"examples":{"list-app-endpoints":{"summary":"List App Endpoints","value":{"appEndpoints":[{"name":"getEntity","label":"Get Entity","description":"Retrieves the given entity.","context":null,"annotations":{},"attachedAccounts":[],"public":false,"approved":false,"deprecated":false,"archived":false,"centicreditsFormula":null,"centicreditsFormulaDescription":null,"centicreditsFormulaDocumentationUrl":null,"centicreditsFormulaMeta":null,"schemaVersion":1,"rev":1,"createdAt":"2026-06-17T10:00:00.000Z","updatedAt":"2026-06-17T10:00:00.000Z"}]}},"with-input-schema":{"summary":"List App Endpoints (includeInputSchema=true)","value":{"appEndpoints":[{"name":"getEntity","label":"Get Entity","description":"Retrieves the given entity.","context":null,"annotations":{},"attachedAccounts":[],"public":false,"approved":false,"deprecated":false,"archived":false,"centicreditsFormula":null,"centicreditsFormulaDescription":null,"centicreditsFormulaDocumentationUrl":null,"centicreditsFormulaMeta":null,"schemaVersion":1,"rev":1,"createdAt":"2026-06-17T10:00:00.000Z","updatedAt":"2026-06-17T10:00:00.000Z","inputParameters":[{"name":"id","type":"uinteger","label":"Entity ID","required":true},{"name":"email","type":"email","label":"Email address"}]}]}}}}}}}},"post":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"Create Endpoint","description":"Creates a new endpoint on the app version. The endpoint starts private and unapproved. By default (`endpointInitMode: example`) its sections (`api`, `inputParameters`, `outputParameters`) and `context` are seeded from a built-in endpoint template; pass `endpointInitMode: blank` to start with empty sections instead. Which template seeds an `example` endpoint is chosen with `templateType`: `regular` (default) is a single-route example, while `universal` is an arbitrary-call example that forwards a caller-supplied method, path, query string, headers and body to the app's API — a `universal` endpoint is additionally created with the `arbitraryCallHint` annotation set. All sections can be edited afterwards via the section endpoints. The `name` must be alphanumeric, start with a letter, be 3 to 128 characters long, unique within the app version, and not a reserved keyword. `attachedAccounts` is optional; every connection it lists must belong to the app, otherwise the request is rejected.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["name","label"],"properties":{"name":{"type":"string","pattern":"^[a-zA-Z][0-9a-zA-Z]{1,126}[0-9a-zA-Z]$","maxLength":128},"label":{"type":"string"},"description":{"type":"string"},"attachedAccounts":{"type":"array","items":{"type":"string"},"description":"Names of connections to attach to the endpoint. Each must belong to the app."},"endpointInitMode":{"type":"string","enum":["example","blank"],"default":"example","description":"How the endpoint's sections are initialized. `example` (default) seeds them from a built-in endpoint template; `blank` starts with empty sections."},"templateType":{"type":"string","enum":["regular","universal"],"default":"regular","description":"Which built-in template seeds the endpoint. `regular` (default) is a single-route example; `universal` is an arbitrary-call example (caller-supplied method, path, query string, headers and body) and also sets the `arbitraryCallHint` annotation. Ignored when `endpointInitMode` is `blank`."}}},"examples":{"create-endpoint":{"summary":"Create Endpoint","value":{"name":"getEntity","label":"Get Entity","description":"Retrieves the given entity.","attachedAccounts":["my-app-connection"],"endpointInitMode":"example","templateType":"regular"}},"create-universal-endpoint":{"summary":"Create Universal Endpoint","value":{"name":"makeApiCall","label":"Make an API Call","description":"Performs an arbitrary API call.","attachedAccounts":["my-app-connection"],"endpointInitMode":"example","templateType":"universal"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appEndpoint":{"type":"object","properties":{"name":{"type":"string","description":"Endpoint name. Unique within the app version, immutable after creation."},"label":{"type":"string"},"description":{"type":"string","nullable":true},"context":{"type":"string","nullable":true,"description":"Free-form context made available to AI agents calling the endpoint."},"annotations":{"type":"object","description":"MCP-inspired behavior hints. Only the known hints are persisted; unknown keys are stripped.","properties":{"readOnlyHint":{"type":"boolean"},"destructiveHint":{"type":"boolean"},"idempotentHint":{"type":"boolean"},"openWorldHint":{"type":"boolean"},"arbitraryCallHint":{"type":"boolean"}}},"attachedAccounts":{"type":"array","items":{"type":"string"},"description":"Names of the connections attached to the endpoint."},"public":{"type":"boolean"},"approved":{"type":"boolean"},"deprecated":{"type":"boolean"},"archived":{"type":"boolean","description":"Zone-only flag; never synchronized to HQ."},"centicreditsFormula":{"type":"string","nullable":true},"centicreditsFormulaDescription":{"type":"string","nullable":true},"centicreditsFormulaDocumentationUrl":{"type":"string","nullable":true},"centicreditsFormulaMeta":{"type":"string","nullable":true},"schemaVersion":{"type":"integer"},"rev":{"type":"integer","description":"Revision number, used for Swarm sync."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"create-endpoint":{"summary":"Create Endpoint","value":{"appEndpoint":{"name":"getEntity","label":"Get Entity","description":"Retrieves the given entity.","context":null,"annotations":{},"attachedAccounts":[],"public":false,"approved":false,"deprecated":false,"archived":false,"centicreditsFormula":null,"centicreditsFormulaDescription":null,"centicreditsFormulaDocumentationUrl":null,"centicreditsFormulaMeta":null,"schemaVersion":1,"rev":1,"createdAt":"2026-06-17T10:00:00.000Z","updatedAt":"2026-06-17T10:00:00.000Z"}}},"create-universal-endpoint":{"summary":"Create Universal Endpoint","value":{"appEndpoint":{"name":"makeApiCall","label":"Make an API Call","description":"Performs an arbitrary API call.","context":"# Context for the Universal Endpoint\n","annotations":{"arbitraryCallHint":true},"attachedAccounts":[],"public":false,"approved":false,"deprecated":false,"archived":false,"centicreditsFormula":null,"centicreditsFormulaDescription":null,"centicreditsFormulaDocumentationUrl":null,"centicreditsFormulaMeta":null,"schemaVersion":1,"rev":1,"createdAt":"2026-06-17T10:00:00.000Z","updatedAt":"2026-06-17T10:00:00.000Z"}}}}}}},"400":{"description":"Invalid input — the name is malformed, reserved, or already taken, or an attached connection does not belong to the app.","content":{"application/json":{"schema":{"type":"object"},"examples":{"duplicate-name":{"summary":"Endpoint already exists","value":{"detail":"Endpoint with the same name already exists.","code":"IM005"}},"account-not-in-app":{"summary":"Attached connection does not belong to the app","value":{"detail":"These connections do not belong to the app: my-app-connection.","code":"IM005"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/endpoints/{SDK_endpointName}":{"get":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"Get Endpoint","description":"Returns the metadata of a single endpoint. On approved apps, pending changes are overlaid.","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appEndpoint":{"type":"object","properties":{"name":{"type":"string","description":"Endpoint name. Unique within the app version, immutable after creation."},"label":{"type":"string"},"description":{"type":"string","nullable":true},"context":{"type":"string","nullable":true,"description":"Free-form context made available to AI agents calling the endpoint."},"annotations":{"type":"object","description":"MCP-inspired behavior hints. Only the known hints are persisted; unknown keys are stripped.","properties":{"readOnlyHint":{"type":"boolean"},"destructiveHint":{"type":"boolean"},"idempotentHint":{"type":"boolean"},"openWorldHint":{"type":"boolean"},"arbitraryCallHint":{"type":"boolean"}}},"attachedAccounts":{"type":"array","items":{"type":"string"},"description":"Names of the connections attached to the endpoint."},"public":{"type":"boolean"},"approved":{"type":"boolean"},"deprecated":{"type":"boolean"},"archived":{"type":"boolean","description":"Zone-only flag; never synchronized to HQ."},"centicreditsFormula":{"type":"string","nullable":true},"centicreditsFormulaDescription":{"type":"string","nullable":true},"centicreditsFormulaDocumentationUrl":{"type":"string","nullable":true},"centicreditsFormulaMeta":{"type":"string","nullable":true},"schemaVersion":{"type":"integer"},"rev":{"type":"integer","description":"Revision number, used for Swarm sync."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"get-endpoint":{"summary":"Get Endpoint","value":{"appEndpoint":{"name":"getEntity","label":"Get Entity","description":"Retrieves the given entity.","context":null,"annotations":{},"attachedAccounts":[],"public":false,"approved":false,"deprecated":false,"archived":false,"centicreditsFormula":null,"centicreditsFormulaDescription":null,"centicreditsFormulaDocumentationUrl":null,"centicreditsFormulaMeta":null,"schemaVersion":1,"rev":1,"createdAt":"2026-06-17T10:00:00.000Z","updatedAt":"2026-06-17T10:00:00.000Z"}}}}}}},"404":{"description":"Endpoint not found."}}},"patch":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"Update Endpoint","description":"Updates one or more metadata fields of an endpoint. At least one field must be provided. On an approved app, the versioned fields (`context`, `annotations`, `attachedAccounts`) are recorded as pending changes instead of being applied immediately. When `attachedAccounts` is supplied, every connection it lists must belong to the app, otherwise the request is rejected.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointName","in":"path","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","minProperties":1,"properties":{"label":{"type":"string"},"description":{"type":"string"},"context":{"type":"string"},"annotations":{"type":"object","additionalProperties":false,"properties":{"readOnlyHint":{"type":"boolean"},"destructiveHint":{"type":"boolean"},"idempotentHint":{"type":"boolean"},"openWorldHint":{"type":"boolean"},"arbitraryCallHint":{"type":"boolean"}}},"attachedAccounts":{"type":"array","items":{"type":"string"}}}},"example":{"label":"Get Entity","description":"Retrieves the given entity by its ID.","annotations":{"readOnlyHint":true}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appEndpoint":{"type":"object","properties":{"name":{"type":"string","description":"Endpoint name. Unique within the app version, immutable after creation."},"label":{"type":"string"},"description":{"type":"string","nullable":true},"context":{"type":"string","nullable":true,"description":"Free-form context made available to AI agents calling the endpoint."},"annotations":{"type":"object","description":"MCP-inspired behavior hints. Only the known hints are persisted; unknown keys are stripped.","properties":{"readOnlyHint":{"type":"boolean"},"destructiveHint":{"type":"boolean"},"idempotentHint":{"type":"boolean"},"openWorldHint":{"type":"boolean"},"arbitraryCallHint":{"type":"boolean"}}},"attachedAccounts":{"type":"array","items":{"type":"string"},"description":"Names of the connections attached to the endpoint."},"public":{"type":"boolean"},"approved":{"type":"boolean"},"deprecated":{"type":"boolean"},"archived":{"type":"boolean","description":"Zone-only flag; never synchronized to HQ."},"centicreditsFormula":{"type":"string","nullable":true},"centicreditsFormulaDescription":{"type":"string","nullable":true},"centicreditsFormulaDocumentationUrl":{"type":"string","nullable":true},"centicreditsFormulaMeta":{"type":"string","nullable":true},"schemaVersion":{"type":"integer"},"rev":{"type":"integer","description":"Revision number, used for Swarm sync."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"update-endpoint":{"summary":"Update Endpoint","value":{"appEndpoint":{"name":"getEntity","label":"Get Entity","description":"Retrieves the given entity by its ID.","context":null,"annotations":{"readOnlyHint":true},"attachedAccounts":[],"public":false,"approved":false,"deprecated":false,"archived":false,"centicreditsFormula":null,"centicreditsFormulaDescription":null,"centicreditsFormulaDocumentationUrl":null,"centicreditsFormulaMeta":null,"schemaVersion":1,"rev":1,"createdAt":"2026-06-17T10:00:00.000Z","updatedAt":"2026-06-17T10:05:00.000Z"}}}}}}},"400":{"description":"An attached connection does not belong to the app.","content":{"application/json":{"schema":{"type":"object"},"examples":{"account-not-in-app":{"summary":"Attached connection does not belong to the app","value":{"detail":"These connections do not belong to the app: my-app-connection.","code":"IM005"}}}}}}}},"delete":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"Delete Endpoint","description":"Deletes an endpoint. Only possible while the app is **not public** — once the app is public, endpoints can no longer be deleted; archive them instead.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appEndpoint":{"type":"string"}}},"examples":{"delete-endpoint":{"summary":"Delete Endpoint","value":{"appEndpoint":"getEntity"}}}}}},"400":{"description":"The app is public — endpoints can't be deleted; archive instead.","content":{"application/json":{"schema":{"type":"object"},"examples":{"public-app":{"summary":"Cannot delete from a public app","value":{"detail":"Can't delete an endpoint from a public app.","code":"IM005"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/endpoints/{SDK_endpointName}/{SDK_endpointSection}":{"get":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"Get Endpoint Section","description":"Returns the source of one endpoint section as JSONC. Sections are: `api` (the AppRuntime API definition), `scope` (required OAuth scopes), `inputParameters` and `outputParameters` (Forman schema DSL). On approved apps, a pending change supersedes the live value.","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointSection","in":"path","schema":{"type":"string","enum":["api","scope","inputParameters","outputParameters"]},"required":true}],"responses":{"200":{"description":"Successful response (raw JSONC).","content":{"application/jsonc":{"schema":{"type":"string"},"examples":{"get-endpoint-api":{"summary":"Get the api section","value":"{\n  \"url\": \"/entities/{{parameters.id}}\",\n  \"method\": \"GET\"\n}\n"}}}}}}},"put":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"Set Endpoint Section","description":"Writes one endpoint section. The `api` section accepts an object or an array of objects; `scope`, `inputParameters` and `outputParameters` accept an array. On an approved app the write is recorded as a pending change (returned as `change`) instead of being applied immediately.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointSection","in":"path","schema":{"type":"string","enum":["api","scope","inputParameters","outputParameters"]},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"type":"array","items":{}}]},"example":{"url":"/entities/{{parameters.id}}","method":"GET"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"change":{"type":"object","nullable":true}}},"examples":{"set-endpoint-section":{"summary":"Set Endpoint Section (in-development app)","value":{"change":null}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/endpoints/{SDK_endpointName}/clone":{"post":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"Clone Endpoint","description":"Creates a copy of an existing endpoint under a new name within the same app version. All sections and metadata are copied; the clone always starts private and unapproved. The `newName` must be alphanumeric, start with a letter, be 3 to 128 characters long, and be unique within the app version.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointName","in":"path","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["newName"],"properties":{"newName":{"type":"string","pattern":"^[a-zA-Z][0-9a-zA-Z]{1,126}[0-9a-zA-Z]$","maxLength":128},"label":{"type":"string"}}},"example":{"newName":"getEntityCopy","label":"Get Entity (copy)"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appEndpoint":{"type":"object","properties":{"name":{"type":"string","description":"Endpoint name. Unique within the app version, immutable after creation."},"label":{"type":"string"},"description":{"type":"string","nullable":true},"context":{"type":"string","nullable":true,"description":"Free-form context made available to AI agents calling the endpoint."},"annotations":{"type":"object","description":"MCP-inspired behavior hints. Only the known hints are persisted; unknown keys are stripped.","properties":{"readOnlyHint":{"type":"boolean"},"destructiveHint":{"type":"boolean"},"idempotentHint":{"type":"boolean"},"openWorldHint":{"type":"boolean"},"arbitraryCallHint":{"type":"boolean"}}},"attachedAccounts":{"type":"array","items":{"type":"string"},"description":"Names of the connections attached to the endpoint."},"public":{"type":"boolean"},"approved":{"type":"boolean"},"deprecated":{"type":"boolean"},"archived":{"type":"boolean","description":"Zone-only flag; never synchronized to HQ."},"centicreditsFormula":{"type":"string","nullable":true},"centicreditsFormulaDescription":{"type":"string","nullable":true},"centicreditsFormulaDocumentationUrl":{"type":"string","nullable":true},"centicreditsFormulaMeta":{"type":"string","nullable":true},"schemaVersion":{"type":"integer"},"rev":{"type":"integer","description":"Revision number, used for Swarm sync."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"clone-endpoint":{"summary":"Clone Endpoint","value":{"appEndpoint":{"name":"getEntityCopy","label":"Get Entity (copy)","description":"Retrieves the given entity.","context":null,"annotations":{},"attachedAccounts":[],"public":false,"approved":false,"deprecated":false,"archived":false,"centicreditsFormula":null,"centicreditsFormulaDescription":null,"centicreditsFormulaDocumentationUrl":null,"centicreditsFormulaMeta":null,"schemaVersion":1,"rev":1,"createdAt":"2026-06-17T10:10:00.000Z","updatedAt":"2026-06-17T10:10:00.000Z"}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/endpoints/{SDK_endpointName}/consumable":{"put":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"Set Endpoint Consumable","description":"Sets the centicredits cost formula and its descriptive fields for an endpoint. Requires the `allow_apps_set_consumable` user feature. Omitted fields are cleared (set to null).","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointName","in":"path","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"centicreditsFormula":{"type":"string"},"centicreditsFormulaDescription":{"type":"string"},"centicreditsFormulaDocumentationUrl":{"type":"string"},"centicreditsFormulaMeta":{"type":"string"}}},"example":{"centicreditsFormula":"100","centicreditsFormulaDescription":"Flat 1 credit per call."}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}}},"examples":{"set-consumable":{"summary":"Set Endpoint Consumable","value":{"name":"getEntity"}}}}}},"403":{"description":"The user lacks the `allow_apps_set_consumable` feature.","content":{"application/json":{"schema":{"type":"object"},"examples":{"insufficient-rights":{"summary":"Missing permission","value":{"detail":"You need the allow_apps_set_consumable permission to set an endpoint consumable.","code":"IM002"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/endpoints/{SDK_endpointName}/connections":{"post":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"Attach Endpoint Connection","description":"Adds a connection (account) to the endpoint's list of attached connections. The connection must belong to the app, otherwise the request is rejected.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointName","in":"path","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["connection"],"properties":{"connection":{"type":"string"}}},"example":{"connection":"myAppConnection"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appEndpoint":{"type":"object","properties":{"name":{"type":"string","description":"Endpoint name. Unique within the app version, immutable after creation."},"label":{"type":"string"},"description":{"type":"string","nullable":true},"context":{"type":"string","nullable":true,"description":"Free-form context made available to AI agents calling the endpoint."},"annotations":{"type":"object","description":"MCP-inspired behavior hints. Only the known hints are persisted; unknown keys are stripped.","properties":{"readOnlyHint":{"type":"boolean"},"destructiveHint":{"type":"boolean"},"idempotentHint":{"type":"boolean"},"openWorldHint":{"type":"boolean"},"arbitraryCallHint":{"type":"boolean"}}},"attachedAccounts":{"type":"array","items":{"type":"string"},"description":"Names of the connections attached to the endpoint."},"public":{"type":"boolean"},"approved":{"type":"boolean"},"deprecated":{"type":"boolean"},"archived":{"type":"boolean","description":"Zone-only flag; never synchronized to HQ."},"centicreditsFormula":{"type":"string","nullable":true},"centicreditsFormulaDescription":{"type":"string","nullable":true},"centicreditsFormulaDocumentationUrl":{"type":"string","nullable":true},"centicreditsFormulaMeta":{"type":"string","nullable":true},"schemaVersion":{"type":"integer"},"rev":{"type":"integer","description":"Revision number, used for Swarm sync."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"attach-connection":{"summary":"Attach Endpoint Connection","value":{"appEndpoint":{"name":"getEntity","label":"Get Entity","description":"Retrieves the given entity.","context":null,"annotations":{},"attachedAccounts":["myAppConnection"],"public":false,"approved":false,"deprecated":false,"archived":false,"centicreditsFormula":null,"centicreditsFormulaDescription":null,"centicreditsFormulaDocumentationUrl":null,"centicreditsFormulaMeta":null,"schemaVersion":1,"rev":1,"createdAt":"2026-06-17T10:00:00.000Z","updatedAt":"2026-06-17T10:15:00.000Z"}}}}}}},"400":{"description":"The connection does not belong to the app.","content":{"application/json":{"schema":{"type":"object"},"examples":{"account-not-in-app":{"summary":"Connection does not belong to the app","value":{"detail":"These connections do not belong to the app: myAppConnection.","code":"IM005"}}}}}}}},"delete":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"Detach Endpoint Connection","description":"Removes a connection (account) from the endpoint's list of attached connections.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointName","in":"path","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["connection"],"properties":{"connection":{"type":"string"}}},"example":{"connection":"myAppConnection"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appEndpoint":{"type":"object","properties":{"name":{"type":"string","description":"Endpoint name. Unique within the app version, immutable after creation."},"label":{"type":"string"},"description":{"type":"string","nullable":true},"context":{"type":"string","nullable":true,"description":"Free-form context made available to AI agents calling the endpoint."},"annotations":{"type":"object","description":"MCP-inspired behavior hints. Only the known hints are persisted; unknown keys are stripped.","properties":{"readOnlyHint":{"type":"boolean"},"destructiveHint":{"type":"boolean"},"idempotentHint":{"type":"boolean"},"openWorldHint":{"type":"boolean"},"arbitraryCallHint":{"type":"boolean"}}},"attachedAccounts":{"type":"array","items":{"type":"string"},"description":"Names of the connections attached to the endpoint."},"public":{"type":"boolean"},"approved":{"type":"boolean"},"deprecated":{"type":"boolean"},"archived":{"type":"boolean","description":"Zone-only flag; never synchronized to HQ."},"centicreditsFormula":{"type":"string","nullable":true},"centicreditsFormulaDescription":{"type":"string","nullable":true},"centicreditsFormulaDocumentationUrl":{"type":"string","nullable":true},"centicreditsFormulaMeta":{"type":"string","nullable":true},"schemaVersion":{"type":"integer"},"rev":{"type":"integer","description":"Revision number, used for Swarm sync."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"detach-connection":{"summary":"Detach Endpoint Connection","value":{"appEndpoint":{"name":"getEntity","label":"Get Entity","description":"Retrieves the given entity.","context":null,"annotations":{},"attachedAccounts":[],"public":false,"approved":false,"deprecated":false,"archived":false,"centicreditsFormula":null,"centicreditsFormulaDescription":null,"centicreditsFormulaDocumentationUrl":null,"centicreditsFormulaMeta":null,"schemaVersion":1,"rev":1,"createdAt":"2026-06-17T10:00:00.000Z","updatedAt":"2026-06-17T10:20:00.000Z"}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/endpoints/{SDK_endpointName}/{SDK_endpointVisibility}":{"post":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"Set Endpoint Visibility","description":"Sets an endpoint public or private. Only public endpoints are compiled into the app's manifest. Use the path segment `public` or `private`.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointVisibility","in":"path","schema":{"type":"string","enum":["public","private"]},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"set-visibility":{"summary":"Set Endpoint Visibility","value":{"changed":true}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/endpoints/{SDK_endpointName}/{SDK_endpointStatus}":{"post":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"Set Endpoint Deprecation","description":"Marks an endpoint as deprecated or removes the deprecation. Deprecation is a soft flag that can be reflected in the UI. Use the path segment `deprecate` or `undeprecate`.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointStatus","in":"path","schema":{"type":"string","enum":["deprecate","undeprecate"]},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"set-deprecation":{"summary":"Set Endpoint Deprecation","value":{"changed":true}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/endpoints/{SDK_endpointName}/{SDK_endpointArchiveStatus}":{"post":{"tags":["SDK Apps / Endpoints"],"x-internal":true,"summary":"Set Endpoint Archived","description":"Archives or unarchives an endpoint. Archiving is a zone-only flag (never synced to HQ) used to hide endpoints that can no longer be deleted (e.g. on public apps). A public (visible) endpoint cannot be archived — set it private first. Use the path segment `archive` or `unarchive`.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_endpointArchiveStatus","in":"path","schema":{"type":"string","enum":["archive","unarchive"]},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"set-archived":{"summary":"Set Endpoint Archived","value":{"changed":true}}}}}},"400":{"description":"Attempted to archive a public (visible) endpoint.","content":{"application/json":{"schema":{"type":"object"},"examples":{"archive-public":{"summary":"Cannot archive a visible endpoint","value":{"detail":"Cannot archive a visible endpoint.","code":"SC400"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/functions":{"post":{"tags":["SDK Apps / Functions"],"summary":"Create Function","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}}},"example":{"name":"parseTime3"}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appFunction":{"type":"object","properties":{"name":{"type":"string"}}}}},"examples":{"create-function":{"summary":"Create Function","value":{"appFunction":{"name":"parseTime"}}}}}}}}},"get":{"tags":["SDK Apps / Functions"],"summary":"List App Functions","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"all","in":"query","schema":{"type":"boolean"},"example":"true"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appFunctions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"args":{"type":"string"}}}}}},"examples":{"list-app-functions":{"summary":"List App Functions","value":{"appFunctions":[{"name":"myFunction","args":"()"}]}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/functions/{SDK_functionName}":{"get":{"tags":["SDK Apps / Functions"],"summary":"Get Function","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_functionName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appFunction":{"type":"object","properties":{"name":{"type":"string"},"code":{"type":"string"},"changes":{"type":"object"}},"required":["name","code","changes"]}}},"examples":{"get-function":{"summary":"Get Function","value":{"appFunction":{"name":"parseTime","code":"function parseTime() {}","changes":{}}}}}}}}}},"delete":{"tags":["SDK Apps / Functions"],"summary":"Delete Function","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_functionName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appFunction":{"type":"object","properties":{"name":{"type":"string"}}}}},"examples":{"delete-function":{"summary":"Delete Function","value":{"appFunction":{"name":"parseTime"}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/functions/{SDK_functionName}/code":{"get":{"tags":["SDK Apps / Functions"],"summary":"Get Function Code","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_functionName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/javascript":{"schema":{"type":"string"},"examples":{"get-function-code":{"summary":"Get Function Code","value":"function parseTime() {\n\n}"}}}}}}},"put":{"tags":["SDK Apps / Functions"],"summary":"Set Function Code","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/javascript":{"schema":{"type":"string","example":"function parseTime() {\n\tconst a = \"Hello There\"\n}"}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_functionName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"change":{"type":"object","properties":{"id":{"type":"integer"},"group":{"type":"string"},"item":{"type":"string"},"code":{"type":"string"}}}}},"examples":{"set-function-code":{"summary":"Set Function Code","value":{"change":{"id":123456,"group":"function","item":"parseTime","code":"code"}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/functions/{SDK_functionName}/test":{"get":{"tags":["SDK Apps / Functions"],"summary":"Get Function Test","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_functionName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/javascript":{"schema":{"type":"string"},"examples":{"get-function-test":{"summary":"Get Function Test","value":"console.log('This is a test');"}}}}}}},"put":{"tags":["SDK Apps / Functions"],"summary":"Set Function Test","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/javascript":{"schema":{"type":"string","example":"console.log('This is a new test');"}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_appVersion","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_functionName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"set-function-test":{"summary":"Set Function Test","value":{"changed":true}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/github":{"get":{"tags":["SDK Apps / GitHub"],"x-internal":true,"summary":"List GitHub bindings","description":"Lists all GitHub repository bindings of the given app version. Returns an empty list when the app is not bound to any repository. The `remoteHeadSha`, `behindBy` and `syncStatus` fields are refreshed best-effort against GitHub on every call — when GitHub is unreachable or the bound branch has no commits, `remoteHeadSha` is `null` and `syncStatus` degrades to `idle` (or `error` if the last sync failed). Only the app's author (or an administrator) may read bindings.","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-github-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"bindings":{"type":"array","items":{"type":"object","description":"A binding between an SDK app version and a GitHub repository, established through a Make GitHub connection. Multiple bindings per app version are allowed (e.g. a public mirror and a private fork, or one binding per branch).","properties":{"id":{"type":"integer","description":"Binding ID. Unique across all apps; assigned by Make."},"appName":{"type":"string","description":"Name of the SDK app the binding belongs to."},"appVersion":{"type":"integer","description":"Major version of the SDK app the binding targets."},"repoUrl":{"type":"string","description":"Canonical URL of the bound repository, as reported by GitHub."},"owner":{"type":"string","description":"GitHub owner login (user or organization), as reported by GitHub at bind time."},"repo":{"type":"string","description":"GitHub repository name."},"branch":{"type":"string","description":"Branch on the remote the binding syncs against."},"defaultBranch":{"type":"string","description":"Default branch reported by GitHub when the binding was last established."},"private":{"type":"boolean","description":"Whether the remote repository is private."},"pullRequestBranch":{"type":"string","description":"Default branch the pull-request flow commits to — `make/<appName>-v<appVersion>`; a request may name another. Opening a pull request moves the binding onto its branch (`branch` becomes it) so later pushes update the pull request. Derived from the app name and version, never stored."},"connectionId":{"type":"integer","description":"ID of the Make GitHub connection used for OAuth."},"connectionName":{"type":"string","nullable":true,"description":"Display name of the Make connection, or `null` when the connection no longer exists."},"lastSyncedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last successful sync in any direction. `null` until the push/pull flows are available."},"lastSyncedCommitSha":{"type":"string","nullable":true},"lastPushedAt":{"type":"string","format":"date-time","nullable":true},"lastPushedCommitSha":{"type":"string","nullable":true},"lastPulledAt":{"type":"string","format":"date-time","nullable":true},"lastPulledCommitSha":{"type":"string","nullable":true},"remoteHeadSha":{"type":"string","nullable":true,"description":"Last observed HEAD SHA of the bound branch. Refreshed best-effort on read; `null` when the branch has no commits or GitHub is unreachable."},"behindBy":{"type":"integer","nullable":true,"description":"Number of commits the app is behind the remote branch. `0` when in sync; `null` when unknown."},"syncStatus":{"type":"string","enum":["idle","syncing","in_sync","behind","error"],"description":"Derived sync status of the binding."},"lastError":{"type":"string","nullable":true,"description":"Most recent error message from a failed sync; cleared on the next successful sync."},"lastPushedChecksums":{"type":"object","nullable":true,"additionalProperties":{"type":"string"},"description":"Per-file checksum snapshot captured at the last successful push. `null` until the push flow is available."},"nameMap":{"type":"object","description":"Repo-side identity map for connections and webhooks. Empty until the first sync.","properties":{"connections":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}},"webhooks":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"createdByUserId":{"type":"integer","description":"ID of the user who created the binding."}}}}}},"examples":{"list-bindings":{"summary":"One binding, remote branch ahead","value":{"bindings":[{"id":42,"appName":"my-github-app","appVersion":1,"repoUrl":"https://github.com/octocat/my-github-app","owner":"octocat","repo":"my-github-app","branch":"main","defaultBranch":"main","pullRequestBranch":"make/my-github-app-v1","private":true,"connectionId":137,"connectionName":"My GitHub connection","lastSyncedAt":null,"lastSyncedCommitSha":null,"lastPushedAt":null,"lastPushedCommitSha":null,"lastPulledAt":null,"lastPulledCommitSha":null,"remoteHeadSha":"4b825dc642cb6eb9a060e54bf8d69288fbee4904","behindBy":null,"syncStatus":"behind","lastError":null,"lastPushedChecksums":null,"nameMap":{"connections":{},"webhooks":{}},"createdAt":"2026-08-12T10:00:00.000Z","updatedAt":"2026-08-12T10:00:00.000Z","createdByUserId":1}]}}}}}}}},"post":{"tags":["SDK Apps / GitHub"],"x-internal":true,"summary":"Create GitHub binding","description":"Binds the app version to a GitHub repository through a Make GitHub connection. When the repository does not exist yet, a clean private repository is created under the selected `owner` — the connection's own account or one of its organizations (see the owners endpoint) — initialized with GitHub's default README only (no app source is pushed; content sync is a separate flow). GitHub's response is authoritative for the stored `owner`, `repoUrl`, `defaultBranch` and `private` values. Re-binding the same `(connection, owner/repo, branch)` combination updates the existing binding instead of failing. Requires a connection whose provider is GitHub, otherwise responds with `400`. Only the app's author (or an administrator) may create bindings.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-github-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["connectionId","repo"],"properties":{"connectionId":{"type":"integer","minimum":1,"description":"ID of the Make GitHub connection to bind through."},"repo":{"type":"string","minLength":1,"maxLength":255,"description":"GitHub repository name. Created as a clean private repository when it does not exist yet."},"owner":{"type":"string","minLength":1,"maxLength":255,"description":"Target owner (account or organization) for the bound repository — the connection's own account or one of its organizations (see the owners endpoint). When omitted, falls back to the owner parsed from `repoUrl`, then to the connection's own account. The stored owner is taken from GitHub's response."},"repoUrl":{"type":"string","minLength":1,"maxLength":2048,"description":"Repository URL. Also resolves the target `owner` when `owner` is omitted — e.g. binding an existing organization repository by its URL. The stored URL is taken from GitHub's response."},"branch":{"type":"string","minLength":1,"maxLength":255,"description":"Branch to sync against. Defaults to the repository's default branch (usually `main`)."},"defaultBranch":{"type":"string","minLength":1,"maxLength":255,"description":"Default-branch hint; the stored value is taken from GitHub's response."},"isPrivate":{"type":"boolean","description":"Visibility hint; the stored value is taken from GitHub's response."}}},"examples":{"create-binding":{"summary":"Bind an app to a repository","value":{"connectionId":137,"repo":"my-github-app"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"binding":{"type":"object","description":"A binding between an SDK app version and a GitHub repository, established through a Make GitHub connection. Multiple bindings per app version are allowed (e.g. a public mirror and a private fork, or one binding per branch).","properties":{"id":{"type":"integer","description":"Binding ID. Unique across all apps; assigned by Make."},"appName":{"type":"string","description":"Name of the SDK app the binding belongs to."},"appVersion":{"type":"integer","description":"Major version of the SDK app the binding targets."},"repoUrl":{"type":"string","description":"Canonical URL of the bound repository, as reported by GitHub."},"owner":{"type":"string","description":"GitHub owner login (user or organization), as reported by GitHub at bind time."},"repo":{"type":"string","description":"GitHub repository name."},"branch":{"type":"string","description":"Branch on the remote the binding syncs against."},"defaultBranch":{"type":"string","description":"Default branch reported by GitHub when the binding was last established."},"private":{"type":"boolean","description":"Whether the remote repository is private."},"pullRequestBranch":{"type":"string","description":"Default branch the pull-request flow commits to — `make/<appName>-v<appVersion>`; a request may name another. Opening a pull request moves the binding onto its branch (`branch` becomes it) so later pushes update the pull request. Derived from the app name and version, never stored."},"connectionId":{"type":"integer","description":"ID of the Make GitHub connection used for OAuth."},"connectionName":{"type":"string","nullable":true,"description":"Display name of the Make connection, or `null` when the connection no longer exists."},"lastSyncedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last successful sync in any direction. `null` until the push/pull flows are available."},"lastSyncedCommitSha":{"type":"string","nullable":true},"lastPushedAt":{"type":"string","format":"date-time","nullable":true},"lastPushedCommitSha":{"type":"string","nullable":true},"lastPulledAt":{"type":"string","format":"date-time","nullable":true},"lastPulledCommitSha":{"type":"string","nullable":true},"remoteHeadSha":{"type":"string","nullable":true,"description":"Last observed HEAD SHA of the bound branch. Refreshed best-effort on read; `null` when the branch has no commits or GitHub is unreachable."},"behindBy":{"type":"integer","nullable":true,"description":"Number of commits the app is behind the remote branch. `0` when in sync; `null` when unknown."},"syncStatus":{"type":"string","enum":["idle","syncing","in_sync","behind","error"],"description":"Derived sync status of the binding."},"lastError":{"type":"string","nullable":true,"description":"Most recent error message from a failed sync; cleared on the next successful sync."},"lastPushedChecksums":{"type":"object","nullable":true,"additionalProperties":{"type":"string"},"description":"Per-file checksum snapshot captured at the last successful push. `null` until the push flow is available."},"nameMap":{"type":"object","description":"Repo-side identity map for connections and webhooks. Empty until the first sync.","properties":{"connections":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}},"webhooks":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"createdByUserId":{"type":"integer","description":"ID of the user who created the binding."}}},"repoCreated":{"type":"boolean","description":"`true` when this call created the repository on GitHub; `false` when it already existed."}}},"examples":{"create-binding":{"summary":"Binding created together with a clean repository","value":{"binding":{"id":42,"appName":"my-github-app","appVersion":1,"repoUrl":"https://github.com/octocat/my-github-app","owner":"octocat","repo":"my-github-app","branch":"main","defaultBranch":"main","pullRequestBranch":"make/my-github-app-v1","private":true,"connectionId":137,"connectionName":"My GitHub connection","lastSyncedAt":null,"lastSyncedCommitSha":null,"lastPushedAt":null,"lastPushedCommitSha":null,"lastPulledAt":null,"lastPulledCommitSha":null,"remoteHeadSha":null,"behindBy":null,"syncStatus":"idle","lastError":null,"lastPushedChecksums":null,"nameMap":{"connections":{},"webhooks":{}},"createdAt":"2026-08-12T10:00:00.000Z","updatedAt":"2026-08-12T10:00:00.000Z","createdByUserId":1},"repoCreated":true}}}}}},"400":{"description":"The connection does not exist or is not a GitHub connection.","content":{"application/json":{"schema":{"type":"object"},"examples":{"not-a-github-connection":{"summary":"Connection is not a GitHub connection","value":{"message":"Connection is not a GitHub connection or does not exist.","code":"IM005"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/github/owners":{"get":{"tags":["SDK Apps / GitHub"],"x-internal":true,"summary":"List GitHub owners","description":"Lists the GitHub owners a new repository can be created under through the given connection: the connection's own account (`user`) first, followed by every organization its OAuth token can see (`organization`). Listing organizations requires the connection's token to carry the `read:org` scope — connections created before that scope was requested (or tokens lacking it) degrade gracefully to the personal account (plus any public-membership organizations GitHub still returns) instead of failing. Any other GitHub failure fails the call with `424` rather than returning a shortened owner list. The reachable owners depend on the connection's token, so `connectionId` is required. Only the app's author (or an administrator) may list owners.","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-github-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1},{"name":"connectionId","in":"query","schema":{"type":"integer","minimum":1},"required":true,"description":"ID of the Make GitHub connection whose reachable owners to list.","example":137}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"owners":{"type":"array","items":{"type":"object","properties":{"login":{"type":"string","description":"GitHub login of the account or organization."},"type":{"type":"string","enum":["user","organization"],"description":"`user` for the connection's own account, `organization` for an org it belongs to."}}}}}},"examples":{"list-owners":{"summary":"Personal account plus two organizations","value":{"owners":[{"login":"octocat","type":"user"},{"login":"acme-inc","type":"organization"},{"login":"globex","type":"organization"}]}}}}}},"400":{"description":"The connection does not exist or is not a GitHub connection.","content":{"application/json":{"schema":{"type":"object"},"examples":{"not-a-github-connection":{"summary":"Connection is not a GitHub connection","value":{"message":"Connection is not a GitHub connection or does not exist.","code":"IM005"}}}}}},"424":{"description":"GitHub rejected a request or was unreachable (invalid/revoked token, API outage). A `403` on the organization listing alone is the one exception — it degrades to the personal account, see the description above.","content":{"application/json":{"schema":{"type":"object"},"examples":{"github-failed":{"summary":"GitHub call failed","value":{"message":"GitHub API GET /user failed: 401 Bad credentials","code":"SC424"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/github/{SDK_githubBindingId}":{"get":{"tags":["SDK Apps / GitHub"],"x-internal":true,"summary":"Get GitHub binding","description":"Returns a single GitHub binding of the given app version. The `remoteHeadSha`, `behindBy` and `syncStatus` fields are refreshed best-effort against GitHub on every call. Responds with `404` when the binding does not exist or belongs to a different app version. Only the app's author (or an administrator) may read bindings.","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-github-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1},{"name":"SDK_githubBindingId","in":"path","schema":{"type":"integer"},"required":true,"description":"ID of the GitHub binding.","example":42}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"binding":{"type":"object","description":"A binding between an SDK app version and a GitHub repository, established through a Make GitHub connection. Multiple bindings per app version are allowed (e.g. a public mirror and a private fork, or one binding per branch).","properties":{"id":{"type":"integer","description":"Binding ID. Unique across all apps; assigned by Make."},"appName":{"type":"string","description":"Name of the SDK app the binding belongs to."},"appVersion":{"type":"integer","description":"Major version of the SDK app the binding targets."},"repoUrl":{"type":"string","description":"Canonical URL of the bound repository, as reported by GitHub."},"owner":{"type":"string","description":"GitHub owner login (user or organization), as reported by GitHub at bind time."},"repo":{"type":"string","description":"GitHub repository name."},"branch":{"type":"string","description":"Branch on the remote the binding syncs against."},"defaultBranch":{"type":"string","description":"Default branch reported by GitHub when the binding was last established."},"private":{"type":"boolean","description":"Whether the remote repository is private."},"pullRequestBranch":{"type":"string","description":"Default branch the pull-request flow commits to — `make/<appName>-v<appVersion>`; a request may name another. Opening a pull request moves the binding onto its branch (`branch` becomes it) so later pushes update the pull request. Derived from the app name and version, never stored."},"connectionId":{"type":"integer","description":"ID of the Make GitHub connection used for OAuth."},"connectionName":{"type":"string","nullable":true,"description":"Display name of the Make connection, or `null` when the connection no longer exists."},"lastSyncedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last successful sync in any direction. `null` until the push/pull flows are available."},"lastSyncedCommitSha":{"type":"string","nullable":true},"lastPushedAt":{"type":"string","format":"date-time","nullable":true},"lastPushedCommitSha":{"type":"string","nullable":true},"lastPulledAt":{"type":"string","format":"date-time","nullable":true},"lastPulledCommitSha":{"type":"string","nullable":true},"remoteHeadSha":{"type":"string","nullable":true,"description":"Last observed HEAD SHA of the bound branch. Refreshed best-effort on read; `null` when the branch has no commits or GitHub is unreachable."},"behindBy":{"type":"integer","nullable":true,"description":"Number of commits the app is behind the remote branch. `0` when in sync; `null` when unknown."},"syncStatus":{"type":"string","enum":["idle","syncing","in_sync","behind","error"],"description":"Derived sync status of the binding."},"lastError":{"type":"string","nullable":true,"description":"Most recent error message from a failed sync; cleared on the next successful sync."},"lastPushedChecksums":{"type":"object","nullable":true,"additionalProperties":{"type":"string"},"description":"Per-file checksum snapshot captured at the last successful push. `null` until the push flow is available."},"nameMap":{"type":"object","description":"Repo-side identity map for connections and webhooks. Empty until the first sync.","properties":{"connections":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}},"webhooks":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"createdByUserId":{"type":"integer","description":"ID of the user who created the binding."}}}}},"examples":{"get-binding":{"summary":"Get a binding","value":{"binding":{"id":42,"appName":"my-github-app","appVersion":1,"repoUrl":"https://github.com/octocat/my-github-app","owner":"octocat","repo":"my-github-app","branch":"main","defaultBranch":"main","pullRequestBranch":"make/my-github-app-v1","private":true,"connectionId":137,"connectionName":"My GitHub connection","lastSyncedAt":null,"lastSyncedCommitSha":null,"lastPushedAt":null,"lastPushedCommitSha":null,"lastPulledAt":null,"lastPulledCommitSha":null,"remoteHeadSha":"4b825dc642cb6eb9a060e54bf8d69288fbee4904","behindBy":null,"syncStatus":"behind","lastError":null,"lastPushedChecksums":null,"nameMap":{"connections":{},"webhooks":{}},"createdAt":"2026-08-12T10:00:00.000Z","updatedAt":"2026-08-12T10:00:00.000Z","createdByUserId":1}}}}}}},"404":{"description":"The binding does not exist or belongs to a different app version.","content":{"application/json":{"schema":{"type":"object"},"examples":{"binding-not-found":{"summary":"Binding not found","value":{"detail":"GitHub binding not found for this app.","code":"IM013"}}}}}}}},"patch":{"tags":["SDK Apps / GitHub"],"x-internal":true,"summary":"Update GitHub binding","description":"Updates editable metadata of an existing GitHub binding — the bound branch or the Make connection the binding authenticates through. At least one field must be provided. Only the app's author (or an administrator) may update bindings.\n\nChanging `branch` moves the binding to another branch of the same repository. The branch must already exist on GitHub (pick it from `GET .../github/{SDK_githubBindingId}/branches`), otherwise responds with `400`; the move also fails with `400` when this app already has a binding on that branch or when the binding's directory would nest inside or around another app's binding there. The push snapshot and the last synced commit are kept — they describe the app, not the branch — while `remoteHeadSha`, `behindBy` and `syncStatus` are recomputed for the new branch. That is what makes switching back to the base branch after a merged pull request read `in_sync` right away.\n\nWhen `connectionId` is changed, the new connection must be a GitHub connection, otherwise responds with `400`.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-github-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1},{"name":"SDK_githubBindingId","in":"path","schema":{"type":"integer"},"required":true,"description":"ID of the GitHub binding.","example":42}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","minProperties":1,"properties":{"branch":{"type":"string","minLength":1,"maxLength":255,"description":"Branch of the bound repository to sync against. Must exist on GitHub."},"connectionId":{"type":"integer","minimum":1,"description":"ID of the Make GitHub connection to authenticate through."}}},"examples":{"switch-branch":{"summary":"Switch the sync branch","value":{"branch":"develop"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"binding":{"type":"object","description":"A binding between an SDK app version and a GitHub repository, established through a Make GitHub connection. Multiple bindings per app version are allowed (e.g. a public mirror and a private fork, or one binding per branch).","properties":{"id":{"type":"integer","description":"Binding ID. Unique across all apps; assigned by Make."},"appName":{"type":"string","description":"Name of the SDK app the binding belongs to."},"appVersion":{"type":"integer","description":"Major version of the SDK app the binding targets."},"repoUrl":{"type":"string","description":"Canonical URL of the bound repository, as reported by GitHub."},"owner":{"type":"string","description":"GitHub owner login (user or organization), as reported by GitHub at bind time."},"repo":{"type":"string","description":"GitHub repository name."},"branch":{"type":"string","description":"Branch on the remote the binding syncs against."},"defaultBranch":{"type":"string","description":"Default branch reported by GitHub when the binding was last established."},"private":{"type":"boolean","description":"Whether the remote repository is private."},"pullRequestBranch":{"type":"string","description":"Default branch the pull-request flow commits to — `make/<appName>-v<appVersion>`; a request may name another. Opening a pull request moves the binding onto its branch (`branch` becomes it) so later pushes update the pull request. Derived from the app name and version, never stored."},"connectionId":{"type":"integer","description":"ID of the Make GitHub connection used for OAuth."},"connectionName":{"type":"string","nullable":true,"description":"Display name of the Make connection, or `null` when the connection no longer exists."},"lastSyncedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last successful sync in any direction. `null` until the push/pull flows are available."},"lastSyncedCommitSha":{"type":"string","nullable":true},"lastPushedAt":{"type":"string","format":"date-time","nullable":true},"lastPushedCommitSha":{"type":"string","nullable":true},"lastPulledAt":{"type":"string","format":"date-time","nullable":true},"lastPulledCommitSha":{"type":"string","nullable":true},"remoteHeadSha":{"type":"string","nullable":true,"description":"Last observed HEAD SHA of the bound branch. Refreshed best-effort on read; `null` when the branch has no commits or GitHub is unreachable."},"behindBy":{"type":"integer","nullable":true,"description":"Number of commits the app is behind the remote branch. `0` when in sync; `null` when unknown."},"syncStatus":{"type":"string","enum":["idle","syncing","in_sync","behind","error"],"description":"Derived sync status of the binding."},"lastError":{"type":"string","nullable":true,"description":"Most recent error message from a failed sync; cleared on the next successful sync."},"lastPushedChecksums":{"type":"object","nullable":true,"additionalProperties":{"type":"string"},"description":"Per-file checksum snapshot captured at the last successful push. `null` until the push flow is available."},"nameMap":{"type":"object","description":"Repo-side identity map for connections and webhooks. Empty until the first sync.","properties":{"connections":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}},"webhooks":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"createdByUserId":{"type":"integer","description":"ID of the user who created the binding."}}}}},"examples":{"switch-branch":{"summary":"Binding after switching the sync branch","value":{"binding":{"id":42,"appName":"my-github-app","appVersion":1,"repoUrl":"https://github.com/octocat/my-github-app","owner":"octocat","repo":"my-github-app","branch":"develop","defaultBranch":"main","pullRequestBranch":"make/my-github-app-v1","private":true,"connectionId":137,"connectionName":"My GitHub connection","lastSyncedAt":null,"lastSyncedCommitSha":null,"lastPushedAt":null,"lastPushedCommitSha":null,"lastPulledAt":null,"lastPulledCommitSha":null,"remoteHeadSha":"9c1e3f2a7b6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f","behindBy":null,"syncStatus":"behind","lastError":null,"lastPushedChecksums":null,"nameMap":{"connections":{},"webhooks":{}},"createdAt":"2026-08-12T10:00:00.000Z","updatedAt":"2026-08-12T10:05:00.000Z","createdByUserId":1}}}}}}},"400":{"description":"The new connection does not exist or is not a GitHub connection, or the new branch is not usable: it does not exist on GitHub, this app is already bound to it, or the binding's directory would nest with another app's binding on it.","content":{"application/json":{"schema":{"type":"object"},"examples":{"not-a-github-connection":{"summary":"Connection is not a GitHub connection","value":{"message":"Connection is not a GitHub connection or does not exist.","code":"IM005"}},"branch-missing":{"summary":"Branch does not exist on GitHub","value":{"message":"Branch \"develop\" does not exist in octocat/my-github-app.","code":"IM005"}},"branch-taken":{"summary":"The app already has a binding on the branch","value":{"message":"This app is already bound to octocat/my-github-app@develop.","code":"IM005"}}}}}},"404":{"description":"The binding does not exist or belongs to a different app version.","content":{"application/json":{"schema":{"type":"object"},"examples":{"binding-not-found":{"summary":"Binding not found","value":{"detail":"GitHub binding not found for this app.","code":"IM013"}}}}}},"424":{"description":"GitHub rejected the branch lookup or was unreachable (invalid/revoked token, API outage). The reason is in `detail`.","content":{"application/json":{"schema":{"type":"object"},"examples":{"github-failed":{"summary":"GitHub call failed","value":{"message":"The request failed due to failure of a previous request.","detail":"GitHub API GET /repos/octocat/my-github-app/git/refs/heads/develop failed: 401 Bad credentials","code":"SC424"}}}}}}}},"delete":{"tags":["SDK Apps / GitHub"],"x-internal":true,"summary":"Delete GitHub binding","description":"Unbinds the app version from the GitHub repository. The repository itself and its contents are never touched — only the binding record in Make is removed. Only the app's author (or an administrator) may delete bindings.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-github-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1},{"name":"SDK_githubBindingId","in":"path","schema":{"type":"integer"},"required":true,"description":"ID of the GitHub binding.","example":42}],"responses":{"204":{"description":"Binding deleted. No content."},"404":{"description":"The binding does not exist or belongs to a different app version.","content":{"application/json":{"schema":{"type":"object"},"examples":{"binding-not-found":{"summary":"Binding not found","value":{"detail":"GitHub binding not found for this app.","code":"IM013"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/github/{SDK_githubBindingId}/push":{"post":{"tags":["SDK Apps / GitHub"],"x-internal":true,"summary":"Push app to GitHub","description":"Commits the app version's complete source tree (app sections, readme, icons, modules, RPCs, functions, webhooks, connections) to the bound repository branch as a single commit, using the binding's Make connection for authentication. When the bound repository does not exist yet it is created as a private repository under the connection's GitHub user and initialised with a bootstrap tree. Connection and webhook folders are committed under stable per-binding folder names (`nameMap`) so the repository layout survives renames; each of their `metadata.json` files carries a stable `$id` used to re-identify the entity on later pulls. On success the binding's sync state (`lastPushedAt`, `lastPushedCommitSha`, `syncStatus`, per-file checksum snapshot) is updated and returned. On failure the binding is marked with `syncStatus: error` and `lastError`. Only the app's author (or an administrator) may push.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-github-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1},{"name":"SDK_githubBindingId","in":"path","schema":{"type":"integer"},"required":true,"description":"ID of the GitHub binding.","example":42}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","maxLength":1024,"description":"Commit message. Defaults to `Sync <appName>@<appVersion> from Make` when omitted."}}},"examples":{"push-with-message":{"summary":"Push with a custom commit message","value":{"message":"Add the listRecords module"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"binding":{"type":"object","description":"A binding between an SDK app version and a GitHub repository, established through a Make GitHub connection. Multiple bindings per app version are allowed (e.g. a public mirror and a private fork, or one binding per branch).","properties":{"id":{"type":"integer","description":"Binding ID. Unique across all apps; assigned by Make."},"appName":{"type":"string","description":"Name of the SDK app the binding belongs to."},"appVersion":{"type":"integer","description":"Major version of the SDK app the binding targets."},"repoUrl":{"type":"string","description":"Canonical URL of the bound repository, as reported by GitHub."},"owner":{"type":"string","description":"GitHub owner login (user or organization), as reported by GitHub at bind time."},"repo":{"type":"string","description":"GitHub repository name."},"branch":{"type":"string","description":"Branch on the remote the binding syncs against."},"defaultBranch":{"type":"string","description":"Default branch reported by GitHub when the binding was last established."},"private":{"type":"boolean","description":"Whether the remote repository is private."},"pullRequestBranch":{"type":"string","description":"Default branch the pull-request flow commits to — `make/<appName>-v<appVersion>`; a request may name another. Opening a pull request moves the binding onto its branch (`branch` becomes it) so later pushes update the pull request. Derived from the app name and version, never stored."},"connectionId":{"type":"integer","description":"ID of the Make GitHub connection used for OAuth."},"connectionName":{"type":"string","nullable":true,"description":"Display name of the Make connection, or `null` when the connection no longer exists."},"lastSyncedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last successful sync in any direction. `null` until the push/pull flows are available."},"lastSyncedCommitSha":{"type":"string","nullable":true},"lastPushedAt":{"type":"string","format":"date-time","nullable":true},"lastPushedCommitSha":{"type":"string","nullable":true},"lastPulledAt":{"type":"string","format":"date-time","nullable":true},"lastPulledCommitSha":{"type":"string","nullable":true},"remoteHeadSha":{"type":"string","nullable":true,"description":"Last observed HEAD SHA of the bound branch. Refreshed best-effort on read; `null` when the branch has no commits or GitHub is unreachable."},"behindBy":{"type":"integer","nullable":true,"description":"Number of commits the app is behind the remote branch. `0` when in sync; `null` when unknown."},"syncStatus":{"type":"string","enum":["idle","syncing","in_sync","behind","error"],"description":"Derived sync status of the binding."},"lastError":{"type":"string","nullable":true,"description":"Most recent error message from a failed sync; cleared on the next successful sync."},"lastPushedChecksums":{"type":"object","nullable":true,"additionalProperties":{"type":"string"},"description":"Per-file checksum snapshot captured at the last successful push. `null` until the push flow is available."},"nameMap":{"type":"object","description":"Repo-side identity map for connections and webhooks. Empty until the first sync.","properties":{"connections":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}},"webhooks":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"createdByUserId":{"type":"integer","description":"ID of the user who created the binding."}}},"commitSha":{"type":"string","description":"SHA of the commit created on the bound branch."}}},"examples":{"push-with-message":{"summary":"Binding after a successful push","value":{"binding":{"id":42,"appName":"my-github-app","appVersion":1,"repoUrl":"https://github.com/octocat/my-github-app","owner":"octocat","repo":"my-github-app","branch":"main","defaultBranch":"main","pullRequestBranch":"make/my-github-app-v1","private":true,"connectionId":137,"connectionName":"My GitHub connection","lastSyncedAt":"2026-08-13T09:00:00.000Z","lastSyncedCommitSha":"8f5b3a2c1d9e7f6a5b4c3d2e1f0a9b8c7d6e5f4a","lastPushedAt":"2026-08-13T09:00:00.000Z","lastPushedCommitSha":"8f5b3a2c1d9e7f6a5b4c3d2e1f0a9b8c7d6e5f4a","lastPulledAt":null,"lastPulledCommitSha":null,"remoteHeadSha":"8f5b3a2c1d9e7f6a5b4c3d2e1f0a9b8c7d6e5f4a","behindBy":0,"syncStatus":"in_sync","lastError":null,"lastPushedChecksums":{"base.imljson":"6c9b7a8d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b","readme.md":"1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b"},"nameMap":{"connections":{"3f1c9a2e-7b4d-4c6a-9e8f-2a1b3c4d5e6f":{"dbName":"my-github-app2","repoPath":"oauth-1"}},"webhooks":{}},"createdAt":"2026-08-12T10:00:00.000Z","updatedAt":"2026-08-13T09:00:00.000Z","createdByUserId":1},"commitSha":"8f5b3a2c1d9e7f6a5b4c3d2e1f0a9b8c7d6e5f4a"}}}}}},"400":{"description":"The bound connection no longer exists or is not a GitHub connection.","content":{"application/json":{"schema":{"type":"object"},"examples":{"connection-unavailable":{"summary":"Bound connection unavailable","value":{"message":"Bound connection is not available or is not a GitHub connection.","code":"IM005"}}}}}},"404":{"description":"The binding does not exist or belongs to a different app version.","content":{"application/json":{"schema":{"type":"object"},"examples":{"binding-not-found":{"summary":"Binding not found","value":{"detail":"GitHub binding not found for this app.","code":"IM013"}}}}}},"424":{"description":"GitHub rejected a request or was unreachable (invalid/revoked token, missing branch, API outage). The binding is marked with `syncStatus: error` and the message is stored in `lastError`.","content":{"application/json":{"schema":{"type":"object"},"examples":{"github-failed":{"summary":"GitHub call failed","value":{"message":"GitHub API GET /user failed: 401 Bad credentials","code":"SC424"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/github/{SDK_githubBindingId}/pull":{"post":{"tags":["SDK Apps / GitHub"],"x-internal":true,"summary":"Pull app from GitHub","description":"Applies the latest commit on the bound branch to the app version. Files whose content differs from the local state are written through the same edit path the SDK editor uses — directly to the component tables on editable apps, or as pending changes (`apps.change`) on approved public apps. Sub-entities that exist only in the repository are created first: modules, RPCs and functions are created under their repository folder names, while connections and webhooks are re-identified by the `$id` in their `metadata.json` (matching the entity's stable external ID) and created with auto-generated names when unknown — this is what makes one repository cloneable into multiple apps. Files that fail to apply (e.g. invalid JSONC) are skipped individually; the rest of the pull proceeds. When the remote HEAD equals the last synced commit the call is a cheap no-op that leaves the stored checksum snapshot untouched (so unpushed local drift stays visible in the diff); a snapshot is only seeded from the local state when the binding does not carry a file-format snapshot yet. On success the binding's sync state (`lastPulledAt`, `lastPulledCommitSha`, `syncStatus`, checksum snapshot, `nameMap`) is updated and returned. Only the app's author (or an administrator) may pull.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-github-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1},{"name":"SDK_githubBindingId","in":"path","schema":{"type":"integer"},"required":true,"description":"ID of the GitHub binding.","example":42}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"binding":{"type":"object","description":"A binding between an SDK app version and a GitHub repository, established through a Make GitHub connection. Multiple bindings per app version are allowed (e.g. a public mirror and a private fork, or one binding per branch).","properties":{"id":{"type":"integer","description":"Binding ID. Unique across all apps; assigned by Make."},"appName":{"type":"string","description":"Name of the SDK app the binding belongs to."},"appVersion":{"type":"integer","description":"Major version of the SDK app the binding targets."},"repoUrl":{"type":"string","description":"Canonical URL of the bound repository, as reported by GitHub."},"owner":{"type":"string","description":"GitHub owner login (user or organization), as reported by GitHub at bind time."},"repo":{"type":"string","description":"GitHub repository name."},"branch":{"type":"string","description":"Branch on the remote the binding syncs against."},"defaultBranch":{"type":"string","description":"Default branch reported by GitHub when the binding was last established."},"private":{"type":"boolean","description":"Whether the remote repository is private."},"pullRequestBranch":{"type":"string","description":"Default branch the pull-request flow commits to — `make/<appName>-v<appVersion>`; a request may name another. Opening a pull request moves the binding onto its branch (`branch` becomes it) so later pushes update the pull request. Derived from the app name and version, never stored."},"connectionId":{"type":"integer","description":"ID of the Make GitHub connection used for OAuth."},"connectionName":{"type":"string","nullable":true,"description":"Display name of the Make connection, or `null` when the connection no longer exists."},"lastSyncedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last successful sync in any direction. `null` until the push/pull flows are available."},"lastSyncedCommitSha":{"type":"string","nullable":true},"lastPushedAt":{"type":"string","format":"date-time","nullable":true},"lastPushedCommitSha":{"type":"string","nullable":true},"lastPulledAt":{"type":"string","format":"date-time","nullable":true},"lastPulledCommitSha":{"type":"string","nullable":true},"remoteHeadSha":{"type":"string","nullable":true,"description":"Last observed HEAD SHA of the bound branch. Refreshed best-effort on read; `null` when the branch has no commits or GitHub is unreachable."},"behindBy":{"type":"integer","nullable":true,"description":"Number of commits the app is behind the remote branch. `0` when in sync; `null` when unknown."},"syncStatus":{"type":"string","enum":["idle","syncing","in_sync","behind","error"],"description":"Derived sync status of the binding."},"lastError":{"type":"string","nullable":true,"description":"Most recent error message from a failed sync; cleared on the next successful sync."},"lastPushedChecksums":{"type":"object","nullable":true,"additionalProperties":{"type":"string"},"description":"Per-file checksum snapshot captured at the last successful push. `null` until the push flow is available."},"nameMap":{"type":"object","description":"Repo-side identity map for connections and webhooks. Empty until the first sync.","properties":{"connections":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}},"webhooks":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"createdByUserId":{"type":"integer","description":"ID of the user who created the binding."}}},"changes":{"type":"array","description":"Pulled files that produced a pending change (`apps.change`) instead of a direct write — only possible on approved public apps. Empty for editable apps.","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the created `apps.change` row."},"code":{"type":"string","description":"Section identifier of the changed file (e.g. `api`, `parameters`, `metadata`)."},"group":{"type":"string","enum":["app","module","rpc","function","hook","account"],"description":"Entity kind the file belongs to."},"item":{"type":"string","description":"Entity name inside the group (the app name for app-level files)."},"created":{"type":"string","format":"date-time"}}}},"appliedCount":{"type":"integer","description":"Total number of files written during the pull, including direct component-table writes that produce no `changes` entry. Always >= `changes.length`."},"created":{"type":"array","description":"Sub-entities that existed only in the repository and were created during this pull.","items":{"type":"object","properties":{"group":{"type":"string","enum":["module","rpc","function","hook","account"],"description":"Kind of the created entity."},"item":{"type":"string","description":"Name of the created entity (auto-generated for connections and webhooks)."}}}}}},"examples":{"pull-with-new-module":{"summary":"Pull that created a module and applied two files","value":{"binding":{"id":42,"appName":"my-github-app","appVersion":1,"repoUrl":"https://github.com/octocat/my-github-app","owner":"octocat","repo":"my-github-app","branch":"main","defaultBranch":"main","pullRequestBranch":"make/my-github-app-v1","private":true,"connectionId":137,"connectionName":"My GitHub connection","lastSyncedAt":"2026-08-13T09:10:00.000Z","lastSyncedCommitSha":"9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0c","lastPushedAt":"2026-08-13T09:00:00.000Z","lastPushedCommitSha":"8f5b3a2c1d9e7f6a5b4c3d2e1f0a9b8c7d6e5f4a","lastPulledAt":"2026-08-13T09:10:00.000Z","lastPulledCommitSha":"9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0c","remoteHeadSha":"9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0c","behindBy":0,"syncStatus":"in_sync","lastError":null,"lastPushedChecksums":{"base.imljson":"6c9b7a8d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b","readme.md":"1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b"},"nameMap":{"connections":{"3f1c9a2e-7b4d-4c6a-9e8f-2a1b3c4d5e6f":{"dbName":"my-github-app2","repoPath":"oauth-1"}},"webhooks":{}},"createdAt":"2026-08-12T10:00:00.000Z","updatedAt":"2026-08-13T09:10:00.000Z","createdByUserId":1},"changes":[],"appliedCount":2,"created":[{"group":"module","item":"listRecords"}]}}}}}},"400":{"description":"The bound connection no longer exists or is not a GitHub connection.","content":{"application/json":{"schema":{"type":"object"},"examples":{"connection-unavailable":{"summary":"Bound connection unavailable","value":{"message":"Bound connection is not available or is not a GitHub connection.","code":"IM005"}}}}}},"404":{"description":"The binding does not exist or belongs to a different app version.","content":{"application/json":{"schema":{"type":"object"},"examples":{"binding-not-found":{"summary":"Binding not found","value":{"detail":"GitHub binding not found for this app.","code":"IM013"}}}}}},"424":{"description":"GitHub rejected a request or was unreachable — including the case where the bound branch has no commits yet (nothing to pull; push from Make first). The binding is marked with `syncStatus: error` and the message is stored in `lastError`.","content":{"application/json":{"schema":{"type":"object"},"examples":{"branch-empty":{"summary":"Bound branch has no commits yet","value":{"message":"GitHub branch octocat/my-github-app@main has no commit yet — push from Make first.","code":"SC424"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/github/{SDK_githubBindingId}/pull-request":{"post":{"tags":["SDK Apps / GitHub"],"x-internal":true,"summary":"Open a pull request with the app","description":"Commits the app version's complete source tree — exactly what `/push` would commit — to a pull-request branch, opens a pull request from it into the bound branch, and moves the binding onto the pull-request branch: the response's `binding.branch` is the pull-request branch and the commit is recorded as a push of it (`lastPushedCommitSha`, `lastSyncedCommitSha`, snapshot, `syncStatus: in_sync`). From then on a plain `/push` updates the pull request. Once it is merged, switch the binding back to the base branch with `PATCH .../github/{SDK_githubBindingId}` — the merge put the last synced tree there, so the binding reads `in_sync` straight away. The bound branch itself is never written.\n\nThe pull-request branch is `branch` from the request, or the app's `make/<appName>-v<appVersion>` (`pullRequestBranch` on the binding) when omitted. A different branch is a different pull request, so several can be kept open side by side; switch between them with `PATCH .../github/{SDK_githubBindingId}` (`branch`).\n\nNothing about pull requests is stored. On every call GitHub is asked whether the pull-request branch already has an open pull request into the bound branch. If it does, the commit is appended to that pull request (`pullRequest.created: false`) — regardless of whether Make or someone in an IDE opened it. If it does not, a new pull request is opened: the branch is created from the bound branch's current tip when it does not exist yet, and continued as it is otherwise — it is never reset, so naming an existing branch cannot lose its history.\n\nResponds with `400` when the pull-request branch is the bound branch itself — push to it directly instead — or is not a valid Git branch name. A failure does not mark the binding with `syncStatus: error` / `lastError`: the bound branch did not move. Only the app's author (or an administrator) may open a pull request.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-github-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1},{"name":"SDK_githubBindingId","in":"path","schema":{"type":"integer"},"required":true,"description":"ID of the GitHub binding.","example":42}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","maxLength":1024,"description":"Commit message. Its first line doubles as the title of a newly opened pull request. Defaults to `Sync <appName>@<appVersion> from Make` when omitted."},"branch":{"type":"string","minLength":1,"maxLength":255,"description":"Head branch of the pull request — any valid Git branch name. Defaults to the app's `pullRequestBranch` (`make/<appName>-v<appVersion>`) when omitted."}}},"examples":{"with-message":{"summary":"Open a pull request with a custom commit message","value":{"message":"Add the listRecords module"}},"named-branch":{"summary":"Open a pull request from a branch of your choice","value":{"branch":"make/my-github-app-v1-list-records","message":"Add the listRecords module"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"binding":{"type":"object","description":"A binding between an SDK app version and a GitHub repository, established through a Make GitHub connection. Multiple bindings per app version are allowed (e.g. a public mirror and a private fork, or one binding per branch).","properties":{"id":{"type":"integer","description":"Binding ID. Unique across all apps; assigned by Make."},"appName":{"type":"string","description":"Name of the SDK app the binding belongs to."},"appVersion":{"type":"integer","description":"Major version of the SDK app the binding targets."},"repoUrl":{"type":"string","description":"Canonical URL of the bound repository, as reported by GitHub."},"owner":{"type":"string","description":"GitHub owner login (user or organization), as reported by GitHub at bind time."},"repo":{"type":"string","description":"GitHub repository name."},"branch":{"type":"string","description":"Branch on the remote the binding syncs against."},"defaultBranch":{"type":"string","description":"Default branch reported by GitHub when the binding was last established."},"private":{"type":"boolean","description":"Whether the remote repository is private."},"pullRequestBranch":{"type":"string","description":"Default branch the pull-request flow commits to — `make/<appName>-v<appVersion>`; a request may name another. Opening a pull request moves the binding onto its branch (`branch` becomes it) so later pushes update the pull request. Derived from the app name and version, never stored."},"connectionId":{"type":"integer","description":"ID of the Make GitHub connection used for OAuth."},"connectionName":{"type":"string","nullable":true,"description":"Display name of the Make connection, or `null` when the connection no longer exists."},"lastSyncedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last successful sync in any direction. `null` until the push/pull flows are available."},"lastSyncedCommitSha":{"type":"string","nullable":true},"lastPushedAt":{"type":"string","format":"date-time","nullable":true},"lastPushedCommitSha":{"type":"string","nullable":true},"lastPulledAt":{"type":"string","format":"date-time","nullable":true},"lastPulledCommitSha":{"type":"string","nullable":true},"remoteHeadSha":{"type":"string","nullable":true,"description":"Last observed HEAD SHA of the bound branch. Refreshed best-effort on read; `null` when the branch has no commits or GitHub is unreachable."},"behindBy":{"type":"integer","nullable":true,"description":"Number of commits the app is behind the remote branch. `0` when in sync; `null` when unknown."},"syncStatus":{"type":"string","enum":["idle","syncing","in_sync","behind","error"],"description":"Derived sync status of the binding."},"lastError":{"type":"string","nullable":true,"description":"Most recent error message from a failed sync; cleared on the next successful sync."},"lastPushedChecksums":{"type":"object","nullable":true,"additionalProperties":{"type":"string"},"description":"Per-file checksum snapshot captured at the last successful push. `null` until the push flow is available."},"nameMap":{"type":"object","description":"Repo-side identity map for connections and webhooks. Empty until the first sync.","properties":{"connections":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}},"webhooks":{"type":"object","additionalProperties":{"type":"object","properties":{"dbName":{"type":"string"},"repoPath":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"createdByUserId":{"type":"integer","description":"ID of the user who created the binding."}}},"commitSha":{"type":"string","description":"SHA of the commit created on the pull-request branch — the binding's new bound branch."},"branch":{"type":"string","description":"The pull-request branch the commit landed on and the binding now tracks — `branch` from the request, `make/<appName>-v<appVersion>` by default."},"pullRequest":{"type":"object","properties":{"number":{"type":"integer","description":"Pull request number on GitHub."},"url":{"type":"string","description":"HTML URL of the pull request."},"created":{"type":"boolean","description":"`true` when this call opened the pull request; `false` when the head branch's already-open pull request received the commit instead."}}}}},"examples":{"opened":{"summary":"A new pull request was opened; the binding now tracks its branch","value":{"binding":{"id":42,"appName":"my-github-app","appVersion":1,"repoUrl":"https://github.com/octocat/my-github-app","owner":"octocat","repo":"my-github-app","branch":"make/my-github-app-v1","defaultBranch":"main","pullRequestBranch":"make/my-github-app-v1","private":true,"connectionId":137,"connectionName":"My GitHub connection","lastSyncedAt":"2026-08-12T10:05:00.000Z","lastSyncedCommitSha":"8f5b3a2c1d9e7f6a5b4c3d2e1f0a9b8c7d6e5f4a","lastPushedAt":"2026-08-12T10:05:00.000Z","lastPushedCommitSha":"8f5b3a2c1d9e7f6a5b4c3d2e1f0a9b8c7d6e5f4a","lastPulledAt":null,"lastPulledCommitSha":null,"remoteHeadSha":"8f5b3a2c1d9e7f6a5b4c3d2e1f0a9b8c7d6e5f4a","behindBy":0,"syncStatus":"in_sync","lastError":null,"lastPushedChecksums":{"metadata.json":"2b1a0f9e8d7c6b5a4f3e2d1c0b9a8f7e6d5c4b3a","readme.md":"1a0f9e8d7c6b5a4f3e2d1c0b9a8f7e6d5c4b3a2b"},"nameMap":{"connections":{},"webhooks":{}},"createdAt":"2026-08-12T10:00:00.000Z","updatedAt":"2026-08-12T10:05:00.000Z","createdByUserId":1},"commitSha":"8f5b3a2c1d9e7f6a5b4c3d2e1f0a9b8c7d6e5f4a","branch":"make/my-github-app-v1","pullRequest":{"number":12,"url":"https://github.com/octocat/my-github-app/pull/12","created":true}}},"updated":{"summary":"The pull-request branch's open pull request received another commit","value":{"binding":{"id":42,"appName":"my-github-app","appVersion":1,"repoUrl":"https://github.com/octocat/my-github-app","owner":"octocat","repo":"my-github-app","branch":"make/my-github-app-v1","defaultBranch":"main","pullRequestBranch":"make/my-github-app-v1","private":true,"connectionId":137,"connectionName":"My GitHub connection","lastSyncedAt":"2026-08-12T10:20:00.000Z","lastSyncedCommitSha":"3c2b1a0f9e8d7c6b5a4f3e2d1c0b9a8f7e6d5c4b","lastPushedAt":"2026-08-12T10:20:00.000Z","lastPushedCommitSha":"3c2b1a0f9e8d7c6b5a4f3e2d1c0b9a8f7e6d5c4b","lastPulledAt":null,"lastPulledCommitSha":null,"remoteHeadSha":"3c2b1a0f9e8d7c6b5a4f3e2d1c0b9a8f7e6d5c4b","behindBy":0,"syncStatus":"in_sync","lastError":null,"lastPushedChecksums":{"metadata.json":"2b1a0f9e8d7c6b5a4f3e2d1c0b9a8f7e6d5c4b3a","readme.md":"0f9e8d7c6b5a4f3e2d1c0b9a8f7e6d5c4b3a2b1a"},"nameMap":{"connections":{},"webhooks":{}},"createdAt":"2026-08-12T10:00:00.000Z","updatedAt":"2026-08-12T10:20:00.000Z","createdByUserId":1},"commitSha":"3c2b1a0f9e8d7c6b5a4f3e2d1c0b9a8f7e6d5c4b","branch":"make/my-github-app-v1","pullRequest":{"number":12,"url":"https://github.com/octocat/my-github-app/pull/12","created":false}}}}}}},"400":{"description":"The bound connection no longer exists or is not a GitHub connection, the pull-request branch is the bound branch itself or not a valid Git branch name, or another app's binding on the pull-request branch nests with this binding's directory.","content":{"application/json":{"schema":{"type":"object"},"examples":{"connection-unavailable":{"summary":"Bound connection unavailable","value":{"message":"Bound connection is not available or is not a GitHub connection.","code":"IM005"}},"already-on-pull-request-branch":{"summary":"The binding already tracks the pull-request branch","value":{"message":"The bound branch \"make/my-github-app-v1\" is the branch pull requests are opened from — push to it directly instead.","code":"IM005"}},"invalid-branch-name":{"summary":"The pull-request branch is not a valid Git branch name","value":{"message":"\"feature/../oops\" is not a valid Git branch name.","code":"IM005"}}}}}},"404":{"description":"The binding does not exist or belongs to a different app version.","content":{"application/json":{"schema":{"type":"object"},"examples":{"binding-not-found":{"summary":"Binding not found","value":{"detail":"GitHub binding not found for this app.","code":"IM013"}}}}}},"424":{"description":"GitHub rejected a request or was unreachable (invalid/revoked token, API outage), or the bound branch has no commit yet to open a pull request against. The reason is in `detail`; the binding is left as it was.","content":{"application/json":{"schema":{"type":"object"},"examples":{"empty-base-branch":{"summary":"Bound branch has no commits","value":{"message":"The request failed due to failure of a previous request.","detail":"GitHub branch octocat/my-github-app@main has no commit yet, so there is nothing to open a pull request against. Push once to initialize the branch.","code":"SC424"}},"github-failed":{"summary":"GitHub call failed","value":{"message":"The request failed due to failure of a previous request.","detail":"GitHub API GET /user failed: 401 Bad credentials","code":"SC424"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/github/{SDK_githubBindingId}/branches":{"get":{"tags":["SDK Apps / GitHub"],"x-internal":true,"summary":"List branches of the bound repository","description":"Lists the branches of the repository the binding points at, read from GitHub on every call through the binding's connection — nothing is cached in Make. These are the values the binding's `branch` can be switched to with `PATCH /sdk/apps/{SDK_appName}/{SDK_appVersion}/github/{SDK_githubBindingId}`. Up to 1000 branches are returned (GitHub pages of 100, at most 10 pages), in GitHub's order. Only the app's author (or an administrator) may list branches.","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-github-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1},{"name":"SDK_githubBindingId","in":"path","schema":{"type":"integer"},"required":true,"description":"ID of the GitHub binding.","example":42}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"branches":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Branch name, as GitHub reports it."}}}}}},"examples":{"list-branches":{"summary":"Default branch, a feature branch and the app's pull-request branch","value":{"branches":[{"name":"develop"},{"name":"main"},{"name":"make/my-github-app-v1"}]}}}}}},"400":{"description":"The bound connection no longer exists or is not a GitHub connection.","content":{"application/json":{"schema":{"type":"object"},"examples":{"connection-unavailable":{"summary":"Bound connection unavailable","value":{"message":"Bound connection is not available or is not a GitHub connection.","code":"IM005"}}}}}},"404":{"description":"The binding does not exist or belongs to a different app version.","content":{"application/json":{"schema":{"type":"object"},"examples":{"binding-not-found":{"summary":"Binding not found","value":{"detail":"GitHub binding not found for this app.","code":"IM013"}}}}}},"424":{"description":"GitHub rejected the request or was unreachable (invalid/revoked token, API outage). The reason is in `detail`.","content":{"application/json":{"schema":{"type":"object"},"examples":{"github-failed":{"summary":"GitHub call failed","value":{"message":"The request failed due to failure of a previous request.","detail":"GitHub API GET /repos/octocat/my-github-app/branches?per_page=100&page=1 failed: 401 Bad credentials","code":"SC424"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/github/{SDK_githubBindingId}/diff":{"get":{"tags":["SDK Apps / GitHub"],"x-internal":true,"summary":"Get GitHub binding diff","description":"Reports whether the app version has drifted locally from what was last pushed to GitHub — the \"ahead by N changes\" signal, independent of whether the remote branch itself has moved (that's the binding's `behindBy`). Combines two signals de-duplicated per component: a checksum diff of the current source tree against the snapshot captured at the last push, and pending change rows that approved public apps accumulate instead of writing directly. Before the first push there is no snapshot (`snapshotAvailable: false`) and every component reports as `added`. Only the app's author (or an administrator) may read the diff.","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-github-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1},{"name":"SDK_githubBindingId","in":"path","schema":{"type":"integer"},"required":true,"description":"ID of the GitHub binding.","example":42}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"diff":{"type":"object","properties":{"ahead":{"type":"integer","description":"Number of components that changed locally since the last push."},"inSync":{"type":"boolean","description":"`true` when no component drifted (`ahead` is 0)."},"changedItems":{"type":"array","description":"The drifted components.","items":{"type":"object","properties":{"kind":{"type":"string","enum":["app","module","rpc","function","account","hook"],"description":"Component kind."},"name":{"type":"string","description":"Component name — the live entity name (connections/webhooks are translated back from their repository folder names)."},"change":{"type":"string","enum":["added","modified","deleted"],"description":"Kind of drift relative to the last push."}}}},"snapshotAvailable":{"type":"boolean","description":"`false` until the binding's first successful push captured a checksum snapshot."}}}}},"examples":{"drifted":{"summary":"One module edited since the last push","value":{"diff":{"ahead":1,"inSync":false,"changedItems":[{"kind":"module","name":"listRecords","change":"modified"}],"snapshotAvailable":true}}}}}}},"404":{"description":"The binding does not exist or belongs to a different app version.","content":{"application/json":{"schema":{"type":"object"},"examples":{"binding-not-found":{"summary":"Binding not found","value":{"detail":"GitHub binding not found for this app.","code":"IM013"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/github/{SDK_githubBindingId}/diff/files":{"get":{"tags":["SDK Apps / GitHub"],"x-internal":true,"summary":"Get GitHub binding file diff","description":"File-level, three-way diff between the app's local source tree, the bound remote branch HEAD, and the per-file snapshot captured at the last push. Lists only files whose local and remote contents differ, with both contents included for text files so a UI can render a side-by-side view. When a snapshot is available, each entry also reports which side moved since the last push and flags real merge conflicts (both sides moved to different content). Binary files (icons) are listed with SHAs only — their contents are omitted. Files outside the SDK source layout (e.g. the bootstrap `.claude/` tree committed on repository creation) are ignored. Costs one GitHub tree listing plus one contents fetch per differing text file. Only the app's author (or an administrator) may read the diff.","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-github-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1},{"name":"SDK_githubBindingId","in":"path","schema":{"type":"integer"},"required":true,"description":"ID of the GitHub binding.","example":42}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"diff":{"type":"object","properties":{"files":{"type":"array","description":"Files whose local and remote contents differ, sorted by path.","items":{"type":"object","properties":{"path":{"type":"string","description":"Repository path of the file (local casing preferred)."},"kind":{"type":"string","nullable":true,"enum":["app","module","rpc","function","account","hook",null],"description":"Component kind the file belongs to, or `null` when unattributable."},"name":{"type":"string","nullable":true,"description":"Live entity name (connections/webhooks translated back from their repository folder names); `null` for app-level files."},"section":{"type":"string","nullable":true,"description":"Section identifier of the file (e.g. `api`, `metadata`, `readme`), or `null`."},"status":{"type":"string","enum":["added","modified","deleted"],"description":"Local state relative to the remote — `added` = local only, `deleted` = remote only."},"localContent":{"type":"string","nullable":true,"description":"Local file content; `null` for binary files or when the file only exists remotely."},"remoteContent":{"type":"string","nullable":true,"description":"Remote file content; `null` for binary files or when the file only exists locally."},"localSha":{"type":"string","nullable":true,"description":"Git blob SHA of the local content, or `null` when the file only exists remotely."},"remoteSha":{"type":"string","nullable":true,"description":"Git blob SHA of the remote content, or `null` when the file only exists locally."},"snapshotSha":{"type":"string","nullable":true,"description":"Git blob SHA recorded at the last push, or `null` when the path wasn't in the snapshot."},"localChangedSinceSnapshot":{"type":"boolean","nullable":true,"description":"`null` when no snapshot is available."},"remoteChangedSinceSnapshot":{"type":"boolean","nullable":true,"description":"`null` when no snapshot is available."},"conflict":{"type":"boolean","nullable":true,"description":"`true` when both sides moved away from the snapshot to different contents — pushing would overwrite remote edits. `null` when no snapshot is available."},"binary":{"type":"boolean","description":"`true` for binary files (icons); their contents are omitted."}}}},"totalChanged":{"type":"integer","description":"Number of entries in `files`."},"localAheadCount":{"type":"integer","description":"Files whose local content moved since the snapshot."},"remoteAheadCount":{"type":"integer","description":"Files whose remote content moved since the snapshot."},"conflictCount":{"type":"integer","description":"Files flagged as conflicts."},"snapshotAvailable":{"type":"boolean","description":"`false` until the binding's first successful push captured a snapshot."},"remoteHeadSha":{"type":"string","nullable":true,"description":"Current HEAD SHA of the bound branch, or `null` when the branch has no commits."},"inSync":{"type":"boolean","description":"`true` when no file differs."}}}}},"examples":{"one-conflict":{"summary":"One file changed on both sides","value":{"diff":{"files":[{"path":"modules/listRecords/communication.imljson","kind":"module","name":"listRecords","section":"api","status":"modified","localContent":"{\"url\": \"/records\", \"method\": \"GET\"}","remoteContent":"{\"url\": \"/records\", \"method\": \"POST\"}","localSha":"2c26b46b68ffc68ff99b453c1d30413413422d70","remoteSha":"7d865e959b2466918c9863afca942d0fb89d7c9a","snapshotSha":"9c1185a5c5e9fc54612808977ee8f548b2258d31","localChangedSinceSnapshot":true,"remoteChangedSinceSnapshot":true,"conflict":true,"binary":false}],"totalChanged":1,"localAheadCount":1,"remoteAheadCount":1,"conflictCount":1,"snapshotAvailable":true,"remoteHeadSha":"9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0c","inSync":false}}}}}}},"400":{"description":"The bound connection no longer exists or is not a GitHub connection.","content":{"application/json":{"schema":{"type":"object"},"examples":{"connection-unavailable":{"summary":"Bound connection unavailable","value":{"message":"Bound connection is not available or is not a GitHub connection.","code":"IM005"}}}}}},"404":{"description":"The binding does not exist or belongs to a different app version.","content":{"application/json":{"schema":{"type":"object"},"examples":{"binding-not-found":{"summary":"Binding not found","value":{"detail":"GitHub binding not found for this app.","code":"IM013"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/app-review":{"get":{"tags":["SDK Apps / Review"],"x-internal":true,"summary":"Get app review state","description":"Returns the full state of the new review flow for the app version: the lifecycle phase, the auto-saved draft form, the submitted snapshot, and the review history timeline. Always responds `200` for the app's author — when the new flow has never touched the app, the state is synthesized (`derivedFromLegacy: true`) from the legacy review flags: an approved app reports `approved`, an in-review app reports `review` (or `changes_required` when the legacy reviewer status is \"feedback sent\"), anything else reports `dormant`. Only the app's author (or an administrator) may read the review state. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-crm-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","description":"State of the new SDK app review flow for one app version. The lifecycle phase either comes from the new flow's own storage or, while the new flow has never touched the app (`derivedFromLegacy: true`), is derived from the legacy review state (`approved`/`in_review` flags and the legacy review status). Every lifecycle step is traced to Trackman with the legacy event closest to it: the submission that requests the review as `apps_review_requested`, every other step (including the reviewer's) as `apps_review_form_updated`, whose `review_form.event` is the timeline event the step appended. Auto-saving the draft (`PUT …/app-review/form`) is not a step and is not traced.","properties":{"appName":{"type":"string","description":"Name of the SDK app."},"appVersion":{"type":"integer","description":"Major version of the SDK app."},"phase":{"type":"string","enum":["dormant","preparing","review","changes_required","approved","updating","update_review","changes_required_update","rereview"],"description":"Lifecycle phase of the review. `dormant` → `start` → `preparing` → `submit` → `review`; a reviewer then approves (`approved`) or requests changes (`changes_required`, reopened with `start-rereview` → `rereview` → `submit` back to `review`). An approved listing is updated through `start-update` → `updating` → `submit` → `update_review`, whose outcomes are `approved` or `changes_required_update` (re-reviewed through `rereview` back to `update_review`). `cancel` steps back one phase on every track."},"reviewStep":{"type":"string","enum":["auto","manual"],"nullable":true,"description":"Sub-step while `phase` is `review`/`update_review` — `manual` means the submission waits with Make (where every submission starts), `auto` means Make sent the automatic-review notes and waits on the developer to implement and confirm them. `null` in every other phase."},"rereviewOrigin":{"type":"string","enum":["changes_required","changes_required_update"],"nullable":true,"description":"While `phase` is `rereview`, the phase the re-review was started from. `null` otherwise."},"derivedFromLegacy":{"type":"boolean","description":"`true` when `phase` was derived from legacy review state instead of stored new-flow state."},"draftForm":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"submittedForm":{"nullable":true,"allOf":[{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}}],"description":"Snapshot of `draftForm` taken at the last submit. Later draft edits do not change it."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last submit."},"events":{"type":"array","description":"Review history timeline, oldest first.","items":{"type":"object","properties":{"type":{"type":"string","description":"Event type. Developer-side (`actor: developer`): `preparation_started`, `submitted`, `cancelled`, `submission_withdrawn`, `auto_notes_confirmed`, `rereview_started`, `rereview_cancelled`, `resubmitted`, `update_started`, `update_submitted`, `update_withdrawn`, `update_cancelled`. Make-side (`actor: make`, with an optional `note`): `auto_notes_sent`, `approved`, `changes_requested`, `update_approved`, `update_changes_requested`."},"actor":{"type":"string","enum":["developer","make"],"description":"Which side of the review produced the event."},"note":{"type":"string","description":"Optional free-text detail (e.g. the reviewer's request). Omitted when empty."},"createdAt":{"type":"string","format":"date-time","description":"When the event happened."}}}},"updatedAt":{"type":"string","format":"date-time","nullable":true,"description":"Last modification of the new-flow state. `null` while no new-flow row exists."}}}}},"examples":{"preparing":{"summary":"Draft being prepared","value":{"review":{"appName":"my-crm-app","appVersion":1,"phase":"preparing","reviewStep":null,"rereviewOrigin":null,"derivedFromLegacy":false,"draftForm":{"vendorRelationship":"direct","testScenarioUrls":["https://eu2.make.com/123456/scenarios/789012/edit"],"apiDocsUrl":"https://developers.example.com"},"submittedForm":null,"submittedAt":null,"events":[{"type":"preparation_started","actor":"developer","createdAt":"2026-08-24T10:00:00.000Z"}],"updatedAt":"2026-08-24T10:05:00.000Z"}}},"derived-from-legacy":{"summary":"App approved through the legacy flow, never touched by the new one","value":{"review":{"appName":"my-crm-app","appVersion":1,"phase":"approved","reviewStep":null,"rereviewOrigin":null,"derivedFromLegacy":true,"draftForm":{},"submittedForm":null,"submittedAt":null,"events":[],"updatedAt":null}}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/app-review/form":{"put":{"tags":["SDK Apps / Review"],"x-internal":true,"summary":"Save review form draft","description":"Overwrites the auto-saved draft of the review form. The whole draft is replaced with the request body, so send the complete current form value on every save (the client auto-saves it debounced). Allowed only while the form is open for editing — the phase is `preparing` (first submission), `updating` (update of an approved listing) or `rereview` (after changes were requested); in any other phase the call fails with `409`. Completeness is not validated here; the client's readiness gate decides when the form can be submitted. Link formats are not validated here either — a half-typed link is a valid draft; they are checked when submitting (see the `submit` endpoint). Only the app's author (or an administrator) may edit the draft. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-crm-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"examples":{"autosave":{"summary":"Partial draft after answering the vendor fork","value":{"vendorRelationship":"agreement","testScenarioUrls":["https://eu2.make.com/123456/scenarios/789012/edit"],"errorHandlingScenarioUrl":"https://eu2.make.com/123456/scenarios/789013/edit","apiDocsUrl":"https://developers.example.com","homepageUrl":"https://example.com","categories":["Productivity"],"subcategories":{"Productivity":["Subcategory A"]},"supportContactName":"Example support","supportContactEmail":"support@example.com","trademarkConsent":true,"externalTcConsent":false}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","description":"State of the new SDK app review flow for one app version. The lifecycle phase either comes from the new flow's own storage or, while the new flow has never touched the app (`derivedFromLegacy: true`), is derived from the legacy review state (`approved`/`in_review` flags and the legacy review status). Every lifecycle step is traced to Trackman with the legacy event closest to it: the submission that requests the review as `apps_review_requested`, every other step (including the reviewer's) as `apps_review_form_updated`, whose `review_form.event` is the timeline event the step appended. Auto-saving the draft (`PUT …/app-review/form`) is not a step and is not traced.","properties":{"appName":{"type":"string","description":"Name of the SDK app."},"appVersion":{"type":"integer","description":"Major version of the SDK app."},"phase":{"type":"string","enum":["dormant","preparing","review","changes_required","approved","updating","update_review","changes_required_update","rereview"],"description":"Lifecycle phase of the review. `dormant` → `start` → `preparing` → `submit` → `review`; a reviewer then approves (`approved`) or requests changes (`changes_required`, reopened with `start-rereview` → `rereview` → `submit` back to `review`). An approved listing is updated through `start-update` → `updating` → `submit` → `update_review`, whose outcomes are `approved` or `changes_required_update` (re-reviewed through `rereview` back to `update_review`). `cancel` steps back one phase on every track."},"reviewStep":{"type":"string","enum":["auto","manual"],"nullable":true,"description":"Sub-step while `phase` is `review`/`update_review` — `manual` means the submission waits with Make (where every submission starts), `auto` means Make sent the automatic-review notes and waits on the developer to implement and confirm them. `null` in every other phase."},"rereviewOrigin":{"type":"string","enum":["changes_required","changes_required_update"],"nullable":true,"description":"While `phase` is `rereview`, the phase the re-review was started from. `null` otherwise."},"derivedFromLegacy":{"type":"boolean","description":"`true` when `phase` was derived from legacy review state instead of stored new-flow state."},"draftForm":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"submittedForm":{"nullable":true,"allOf":[{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}}],"description":"Snapshot of `draftForm` taken at the last submit. Later draft edits do not change it."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last submit."},"events":{"type":"array","description":"Review history timeline, oldest first.","items":{"type":"object","properties":{"type":{"type":"string","description":"Event type. Developer-side (`actor: developer`): `preparation_started`, `submitted`, `cancelled`, `submission_withdrawn`, `auto_notes_confirmed`, `rereview_started`, `rereview_cancelled`, `resubmitted`, `update_started`, `update_submitted`, `update_withdrawn`, `update_cancelled`. Make-side (`actor: make`, with an optional `note`): `auto_notes_sent`, `approved`, `changes_requested`, `update_approved`, `update_changes_requested`."},"actor":{"type":"string","enum":["developer","make"],"description":"Which side of the review produced the event."},"note":{"type":"string","description":"Optional free-text detail (e.g. the reviewer's request). Omitted when empty."},"createdAt":{"type":"string","format":"date-time","description":"When the event happened."}}}},"updatedAt":{"type":"string","format":"date-time","nullable":true,"description":"Last modification of the new-flow state. `null` while no new-flow row exists."}}}}},"examples":{"autosave":{"summary":"Draft stored","value":{"review":{"appName":"my-crm-app","appVersion":1,"phase":"preparing","reviewStep":null,"rereviewOrigin":null,"derivedFromLegacy":false,"draftForm":{"vendorRelationship":"agreement","testScenarioUrls":["https://eu2.make.com/123456/scenarios/789012/edit"],"errorHandlingScenarioUrl":"https://eu2.make.com/123456/scenarios/789013/edit","apiDocsUrl":"https://developers.example.com","homepageUrl":"https://example.com","categories":["Productivity"],"subcategories":{"Productivity":["Subcategory A"]},"supportContactName":"Example support","supportContactEmail":"support@example.com","trademarkConsent":true,"externalTcConsent":false},"submittedForm":null,"submittedAt":null,"events":[{"type":"preparation_started","actor":"developer","createdAt":"2026-08-24T10:00:00.000Z"}],"updatedAt":"2026-08-24T10:06:30.000Z"}}}}}}},"409":{"description":"The draft can only be edited while preparing a submission.","content":{"application/json":{"schema":{"type":"object"},"examples":{"not-editable":{"summary":"Draft edit attempted while the app is in review","value":{"message":"The review form can only be edited while preparing a submission.","code":"SC409"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/app-review/start":{"post":{"tags":["SDK Apps / Review"],"x-internal":true,"summary":"Start preparing a review","description":"Moves the review from `dormant` to `preparing` and opens the form for editing. On the first new-flow contact with an app that has legacy review data, the draft is seeded best-effort from the legacy review form (API docs link, test scenarios, error-handling scenario). Fails with `409` in any other phase — an approved listing is updated with `start-update`, a returned submission is reopened with `start-rereview`. Only the app's author (or an administrator) may do this. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-crm-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","description":"State of the new SDK app review flow for one app version. The lifecycle phase either comes from the new flow's own storage or, while the new flow has never touched the app (`derivedFromLegacy: true`), is derived from the legacy review state (`approved`/`in_review` flags and the legacy review status). Every lifecycle step is traced to Trackman with the legacy event closest to it: the submission that requests the review as `apps_review_requested`, every other step (including the reviewer's) as `apps_review_form_updated`, whose `review_form.event` is the timeline event the step appended. Auto-saving the draft (`PUT …/app-review/form`) is not a step and is not traced.","properties":{"appName":{"type":"string","description":"Name of the SDK app."},"appVersion":{"type":"integer","description":"Major version of the SDK app."},"phase":{"type":"string","enum":["dormant","preparing","review","changes_required","approved","updating","update_review","changes_required_update","rereview"],"description":"Lifecycle phase of the review. `dormant` → `start` → `preparing` → `submit` → `review`; a reviewer then approves (`approved`) or requests changes (`changes_required`, reopened with `start-rereview` → `rereview` → `submit` back to `review`). An approved listing is updated through `start-update` → `updating` → `submit` → `update_review`, whose outcomes are `approved` or `changes_required_update` (re-reviewed through `rereview` back to `update_review`). `cancel` steps back one phase on every track."},"reviewStep":{"type":"string","enum":["auto","manual"],"nullable":true,"description":"Sub-step while `phase` is `review`/`update_review` — `manual` means the submission waits with Make (where every submission starts), `auto` means Make sent the automatic-review notes and waits on the developer to implement and confirm them. `null` in every other phase."},"rereviewOrigin":{"type":"string","enum":["changes_required","changes_required_update"],"nullable":true,"description":"While `phase` is `rereview`, the phase the re-review was started from. `null` otherwise."},"derivedFromLegacy":{"type":"boolean","description":"`true` when `phase` was derived from legacy review state instead of stored new-flow state."},"draftForm":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"submittedForm":{"nullable":true,"allOf":[{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}}],"description":"Snapshot of `draftForm` taken at the last submit. Later draft edits do not change it."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last submit."},"events":{"type":"array","description":"Review history timeline, oldest first.","items":{"type":"object","properties":{"type":{"type":"string","description":"Event type. Developer-side (`actor: developer`): `preparation_started`, `submitted`, `cancelled`, `submission_withdrawn`, `auto_notes_confirmed`, `rereview_started`, `rereview_cancelled`, `resubmitted`, `update_started`, `update_submitted`, `update_withdrawn`, `update_cancelled`. Make-side (`actor: make`, with an optional `note`): `auto_notes_sent`, `approved`, `changes_requested`, `update_approved`, `update_changes_requested`."},"actor":{"type":"string","enum":["developer","make"],"description":"Which side of the review produced the event."},"note":{"type":"string","description":"Optional free-text detail (e.g. the reviewer's request). Omitted when empty."},"createdAt":{"type":"string","format":"date-time","description":"When the event happened."}}}},"updatedAt":{"type":"string","format":"date-time","nullable":true,"description":"Last modification of the new-flow state. `null` while no new-flow row exists."}}}}},"examples":{"started":{"summary":"Preparation started","value":{"review":{"appName":"my-crm-app","appVersion":1,"phase":"preparing","reviewStep":null,"rereviewOrigin":null,"derivedFromLegacy":false,"draftForm":{},"submittedForm":null,"submittedAt":null,"events":[{"type":"preparation_started","actor":"developer","createdAt":"2026-08-24T10:00:00.000Z"}],"updatedAt":"2026-08-24T10:00:00.000Z"}}}}}}},"409":{"description":"The review is not `dormant`.","content":{"application/json":{"schema":{"type":"object"},"examples":{"already-started":{"summary":"Preparation already running","value":{"message":"Action \"start\" is not allowed while the review is \"preparing\".","code":"SC409"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/app-review/submit":{"post":{"tags":["SDK Apps / Review"],"x-internal":true,"summary":"Submit for review","description":"Submits the prepared form, which then waits with Make (`reviewStep: manual`) in the review phase of the track the form belongs to: `preparing` → `review` (event `submitted`), `updating` → `update_review` (`update_submitted`), and `rereview` → back to `review` or `update_review` according to `rereviewOrigin` (`resubmitted`). The current draft is snapshotted into `submittedForm` — later draft edits do not change the submitted record. Completeness of the form is the client's responsibility (the readiness gate); the server does not re-validate it. Link formats are validated, though — the rules of the legacy review form: `apiDocsUrl`, `homepageUrl`, `landingPageUrl` and `appDocsUrl` must be `http(s)` URLs, and every scenario link (`testScenarioUrls`, `errorHandlingScenarioUrl`, `updatedScenarioUrls`) must point at a scenario of this zone, i.e. `https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit` (a query string or fragment may follow). A malformed link fails with `400` (IM005) naming every offending field, and nothing is submitted. Fails with `409` in any other phase.\nUnless the app is already approved or in review, a submission is also the app's review request — the same request as the legacy \"Request approval\" (`POST /sdk/apps/{SDK_appName}/{SDK_appVersion}/review`): it traces the `apps_review_requested` event Make's app review process starts from (its `review_form` carries the submitted form) and marks the app in review (`inReview: true`; on a zone through HQ). That request needs a public app with at least one module — otherwise the submission fails with `400` (IM005) and nothing is submitted.\nOnly the app's author (or an administrator) may submit. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-crm-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","description":"State of the new SDK app review flow for one app version. The lifecycle phase either comes from the new flow's own storage or, while the new flow has never touched the app (`derivedFromLegacy: true`), is derived from the legacy review state (`approved`/`in_review` flags and the legacy review status). Every lifecycle step is traced to Trackman with the legacy event closest to it: the submission that requests the review as `apps_review_requested`, every other step (including the reviewer's) as `apps_review_form_updated`, whose `review_form.event` is the timeline event the step appended. Auto-saving the draft (`PUT …/app-review/form`) is not a step and is not traced.","properties":{"appName":{"type":"string","description":"Name of the SDK app."},"appVersion":{"type":"integer","description":"Major version of the SDK app."},"phase":{"type":"string","enum":["dormant","preparing","review","changes_required","approved","updating","update_review","changes_required_update","rereview"],"description":"Lifecycle phase of the review. `dormant` → `start` → `preparing` → `submit` → `review`; a reviewer then approves (`approved`) or requests changes (`changes_required`, reopened with `start-rereview` → `rereview` → `submit` back to `review`). An approved listing is updated through `start-update` → `updating` → `submit` → `update_review`, whose outcomes are `approved` or `changes_required_update` (re-reviewed through `rereview` back to `update_review`). `cancel` steps back one phase on every track."},"reviewStep":{"type":"string","enum":["auto","manual"],"nullable":true,"description":"Sub-step while `phase` is `review`/`update_review` — `manual` means the submission waits with Make (where every submission starts), `auto` means Make sent the automatic-review notes and waits on the developer to implement and confirm them. `null` in every other phase."},"rereviewOrigin":{"type":"string","enum":["changes_required","changes_required_update"],"nullable":true,"description":"While `phase` is `rereview`, the phase the re-review was started from. `null` otherwise."},"derivedFromLegacy":{"type":"boolean","description":"`true` when `phase` was derived from legacy review state instead of stored new-flow state."},"draftForm":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"submittedForm":{"nullable":true,"allOf":[{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}}],"description":"Snapshot of `draftForm` taken at the last submit. Later draft edits do not change it."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last submit."},"events":{"type":"array","description":"Review history timeline, oldest first.","items":{"type":"object","properties":{"type":{"type":"string","description":"Event type. Developer-side (`actor: developer`): `preparation_started`, `submitted`, `cancelled`, `submission_withdrawn`, `auto_notes_confirmed`, `rereview_started`, `rereview_cancelled`, `resubmitted`, `update_started`, `update_submitted`, `update_withdrawn`, `update_cancelled`. Make-side (`actor: make`, with an optional `note`): `auto_notes_sent`, `approved`, `changes_requested`, `update_approved`, `update_changes_requested`."},"actor":{"type":"string","enum":["developer","make"],"description":"Which side of the review produced the event."},"note":{"type":"string","description":"Optional free-text detail (e.g. the reviewer's request). Omitted when empty."},"createdAt":{"type":"string","format":"date-time","description":"When the event happened."}}}},"updatedAt":{"type":"string","format":"date-time","nullable":true,"description":"Last modification of the new-flow state. `null` while no new-flow row exists."}}}}},"examples":{"submitted":{"summary":"First submission waiting with Make","value":{"review":{"appName":"my-crm-app","appVersion":1,"phase":"review","reviewStep":"manual","rereviewOrigin":null,"derivedFromLegacy":false,"draftForm":{"vendorRelationship":"direct","testScenarioUrls":["https://eu2.make.com/123456/scenarios/789012/edit"],"errorHandlingScenarioUrl":"https://eu2.make.com/123456/scenarios/789013/edit","apiDocsUrl":"https://developers.example.com"},"submittedForm":{"vendorRelationship":"direct","testScenarioUrls":["https://eu2.make.com/123456/scenarios/789012/edit"],"errorHandlingScenarioUrl":"https://eu2.make.com/123456/scenarios/789013/edit","apiDocsUrl":"https://developers.example.com"},"submittedAt":"2026-08-24T10:20:00.000Z","events":[{"type":"preparation_started","actor":"developer","createdAt":"2026-08-24T10:00:00.000Z"},{"type":"submitted","actor":"developer","createdAt":"2026-08-24T10:20:00.000Z"}],"updatedAt":"2026-08-24T10:20:00.000Z"}}}}}}},"400":{"description":"A link in the draft is malformed (the message names every offending field), or the app cannot be put in review yet.","content":{"application/json":{"schema":{"type":"object"},"examples":{"no-module":{"summary":"The app has no module to review","value":{"message":"You cannot submit an app without a module.","code":"IM005"}},"not-public":{"summary":"The app has not been published yet","value":{"message":"App was not set public yet.","code":"IM005"}},"malformed-links":{"summary":"A scenario of another zone and a documentation link without a scheme","value":{"message":"The review form cannot be submitted: \"testScenarioUrls[1]\" must link to a scenario on eu2.make.com (https://eu2.make.com/<teamId>/scenarios/<scenarioId>/edit). \"apiDocsUrl\" must be a valid http(s) URL.","code":"IM005"}}}}}},"409":{"description":"The form is not open for submission (`preparing`, `updating` or `rereview`).","content":{"application/json":{"schema":{"type":"object"},"examples":{"not-submittable":{"summary":"Nothing is being prepared","value":{"message":"Action \"submit\" is not allowed while the review is \"dormant\".","code":"SC409"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/app-review/cancel":{"post":{"tags":["SDK Apps / Review"],"x-internal":true,"summary":"Cancel the current review step","description":"Steps back one phase without submitting; the draft is always kept. First submission: `preparing` returns to `dormant` (event `cancelled`), and a submission still in review is withdrawn back to editing (`review` → `preparing`, `submission_withdrawn` — the UI's \"Edit submission\"). Update of an approved listing: `updating` returns to `approved` (`update_cancelled`, the listing was never affected) and `update_review` is withdrawn back to `updating` (`update_withdrawn`). Re-review: `rereview` returns to the phase it was started from, `changes_required` or `changes_required_update` (`rereview_cancelled`). Fails with `409` in any other phase — a reviewer's decision (`changes_required*`, `approved`) cannot be cancelled. Only the app's author (or an administrator) may do this. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-crm-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","description":"State of the new SDK app review flow for one app version. The lifecycle phase either comes from the new flow's own storage or, while the new flow has never touched the app (`derivedFromLegacy: true`), is derived from the legacy review state (`approved`/`in_review` flags and the legacy review status). Every lifecycle step is traced to Trackman with the legacy event closest to it: the submission that requests the review as `apps_review_requested`, every other step (including the reviewer's) as `apps_review_form_updated`, whose `review_form.event` is the timeline event the step appended. Auto-saving the draft (`PUT …/app-review/form`) is not a step and is not traced.","properties":{"appName":{"type":"string","description":"Name of the SDK app."},"appVersion":{"type":"integer","description":"Major version of the SDK app."},"phase":{"type":"string","enum":["dormant","preparing","review","changes_required","approved","updating","update_review","changes_required_update","rereview"],"description":"Lifecycle phase of the review. `dormant` → `start` → `preparing` → `submit` → `review`; a reviewer then approves (`approved`) or requests changes (`changes_required`, reopened with `start-rereview` → `rereview` → `submit` back to `review`). An approved listing is updated through `start-update` → `updating` → `submit` → `update_review`, whose outcomes are `approved` or `changes_required_update` (re-reviewed through `rereview` back to `update_review`). `cancel` steps back one phase on every track."},"reviewStep":{"type":"string","enum":["auto","manual"],"nullable":true,"description":"Sub-step while `phase` is `review`/`update_review` — `manual` means the submission waits with Make (where every submission starts), `auto` means Make sent the automatic-review notes and waits on the developer to implement and confirm them. `null` in every other phase."},"rereviewOrigin":{"type":"string","enum":["changes_required","changes_required_update"],"nullable":true,"description":"While `phase` is `rereview`, the phase the re-review was started from. `null` otherwise."},"derivedFromLegacy":{"type":"boolean","description":"`true` when `phase` was derived from legacy review state instead of stored new-flow state."},"draftForm":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"submittedForm":{"nullable":true,"allOf":[{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}}],"description":"Snapshot of `draftForm` taken at the last submit. Later draft edits do not change it."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last submit."},"events":{"type":"array","description":"Review history timeline, oldest first.","items":{"type":"object","properties":{"type":{"type":"string","description":"Event type. Developer-side (`actor: developer`): `preparation_started`, `submitted`, `cancelled`, `submission_withdrawn`, `auto_notes_confirmed`, `rereview_started`, `rereview_cancelled`, `resubmitted`, `update_started`, `update_submitted`, `update_withdrawn`, `update_cancelled`. Make-side (`actor: make`, with an optional `note`): `auto_notes_sent`, `approved`, `changes_requested`, `update_approved`, `update_changes_requested`."},"actor":{"type":"string","enum":["developer","make"],"description":"Which side of the review produced the event."},"note":{"type":"string","description":"Optional free-text detail (e.g. the reviewer's request). Omitted when empty."},"createdAt":{"type":"string","format":"date-time","description":"When the event happened."}}}},"updatedAt":{"type":"string","format":"date-time","nullable":true,"description":"Last modification of the new-flow state. `null` while no new-flow row exists."}}}}},"examples":{"cancelled":{"summary":"Preparation cancelled, draft kept","value":{"review":{"appName":"my-crm-app","appVersion":1,"phase":"dormant","reviewStep":null,"rereviewOrigin":null,"derivedFromLegacy":false,"draftForm":{"vendorRelationship":"direct","apiDocsUrl":"https://developers.example.com"},"submittedForm":null,"submittedAt":null,"events":[{"type":"preparation_started","actor":"developer","createdAt":"2026-08-24T10:00:00.000Z"},{"type":"cancelled","actor":"developer","createdAt":"2026-08-24T10:30:00.000Z"}],"updatedAt":"2026-08-24T10:30:00.000Z"}}}}}}},"409":{"description":"There is nothing to cancel in the current phase.","content":{"application/json":{"schema":{"type":"object"},"examples":{"nothing-to-cancel":{"summary":"Review is dormant","value":{"message":"Action \"cancel\" is not allowed while the review is \"dormant\".","code":"SC409"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/app-review/confirm-auto-notes":{"post":{"tags":["SDK Apps / Review"],"x-internal":true,"summary":"Confirm the automatic-review notes","description":"Confirms that the automatic-review notes Make sent (`POST /admin/sdk/apps/{app}/{version}/app-review/send-auto-notes`) are implemented, and hands the submission back to a reviewer: while the phase is `review` or `update_review` with `reviewStep: auto`, the step moves to `manual` and an `auto_notes_confirmed` event is appended. The phase itself does not change. While the step is `manual` — no notes were sent, or they are already confirmed — it fails with `409`, as it does in any other phase. Only the app's author may do this. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-crm-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","description":"State of the new SDK app review flow for one app version. The lifecycle phase either comes from the new flow's own storage or, while the new flow has never touched the app (`derivedFromLegacy: true`), is derived from the legacy review state (`approved`/`in_review` flags and the legacy review status). Every lifecycle step is traced to Trackman with the legacy event closest to it: the submission that requests the review as `apps_review_requested`, every other step (including the reviewer's) as `apps_review_form_updated`, whose `review_form.event` is the timeline event the step appended. Auto-saving the draft (`PUT …/app-review/form`) is not a step and is not traced.","properties":{"appName":{"type":"string","description":"Name of the SDK app."},"appVersion":{"type":"integer","description":"Major version of the SDK app."},"phase":{"type":"string","enum":["dormant","preparing","review","changes_required","approved","updating","update_review","changes_required_update","rereview"],"description":"Lifecycle phase of the review. `dormant` → `start` → `preparing` → `submit` → `review`; a reviewer then approves (`approved`) or requests changes (`changes_required`, reopened with `start-rereview` → `rereview` → `submit` back to `review`). An approved listing is updated through `start-update` → `updating` → `submit` → `update_review`, whose outcomes are `approved` or `changes_required_update` (re-reviewed through `rereview` back to `update_review`). `cancel` steps back one phase on every track."},"reviewStep":{"type":"string","enum":["auto","manual"],"nullable":true,"description":"Sub-step while `phase` is `review`/`update_review` — `manual` means the submission waits with Make (where every submission starts), `auto` means Make sent the automatic-review notes and waits on the developer to implement and confirm them. `null` in every other phase."},"rereviewOrigin":{"type":"string","enum":["changes_required","changes_required_update"],"nullable":true,"description":"While `phase` is `rereview`, the phase the re-review was started from. `null` otherwise."},"derivedFromLegacy":{"type":"boolean","description":"`true` when `phase` was derived from legacy review state instead of stored new-flow state."},"draftForm":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"submittedForm":{"nullable":true,"allOf":[{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}}],"description":"Snapshot of `draftForm` taken at the last submit. Later draft edits do not change it."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last submit."},"events":{"type":"array","description":"Review history timeline, oldest first.","items":{"type":"object","properties":{"type":{"type":"string","description":"Event type. Developer-side (`actor: developer`): `preparation_started`, `submitted`, `cancelled`, `submission_withdrawn`, `auto_notes_confirmed`, `rereview_started`, `rereview_cancelled`, `resubmitted`, `update_started`, `update_submitted`, `update_withdrawn`, `update_cancelled`. Make-side (`actor: make`, with an optional `note`): `auto_notes_sent`, `approved`, `changes_requested`, `update_approved`, `update_changes_requested`."},"actor":{"type":"string","enum":["developer","make"],"description":"Which side of the review produced the event."},"note":{"type":"string","description":"Optional free-text detail (e.g. the reviewer's request). Omitted when empty."},"createdAt":{"type":"string","format":"date-time","description":"When the event happened."}}}},"updatedAt":{"type":"string","format":"date-time","nullable":true,"description":"Last modification of the new-flow state. `null` while no new-flow row exists."}}}}},"examples":{"confirmed":{"summary":"Submission handed to a reviewer","value":{"review":{"appName":"my-crm-app","appVersion":1,"phase":"review","reviewStep":"manual","rereviewOrigin":null,"derivedFromLegacy":false,"draftForm":{"vendorRelationship":"direct","apiDocsUrl":"https://developers.example.com"},"submittedForm":{"vendorRelationship":"direct","apiDocsUrl":"https://developers.example.com"},"submittedAt":"2026-08-24T10:20:00.000Z","events":[{"type":"preparation_started","actor":"developer","createdAt":"2026-08-24T10:00:00.000Z"},{"type":"submitted","actor":"developer","createdAt":"2026-08-24T10:20:00.000Z"},{"type":"auto_notes_sent","actor":"make","note":"The List deals module ignores the API's pagination.","createdAt":"2026-08-24T10:40:00.000Z"},{"type":"auto_notes_confirmed","actor":"developer","createdAt":"2026-08-24T11:00:00.000Z"}],"updatedAt":"2026-08-24T11:00:00.000Z"}}}}}}},"409":{"description":"No automatic-review notes are waiting for confirmation.","content":{"application/json":{"schema":{"type":"object"},"examples":{"nothing-to-confirm":{"summary":"No notes were sent, or they are already confirmed","value":{"message":"Conflict.","detail":"No automatic-review notes are waiting for confirmation; the submission is with a reviewer.","code":"SC409"}},"not-in-review":{"summary":"Nothing is in review","value":{"message":"Conflict.","detail":"Action \"confirmAutoNotes\" is not allowed while the review is \"preparing\".","code":"SC409"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/app-review/start-update":{"post":{"tags":["SDK Apps / Review"],"x-internal":true,"summary":"Start updating an approved listing","description":"Moves an `approved` review to `updating` and reopens the form, including the update fields (`whatChanged`, `updatedScenarioUrls`, `reRunConfirmed`, `contactsConfirmed`). The listing stays approved while the update is prepared: `cancel` returns to `approved` keeping the draft, `submit` sends the update into `update_review`, where it waits with Make. An app approved through the legacy flow (`derivedFromLegacy: true`) may start an update too; from then on the new flow owns the phase. Fails with `409` in any phase other than `approved`. Only the app's author may do this. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-crm-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","description":"State of the new SDK app review flow for one app version. The lifecycle phase either comes from the new flow's own storage or, while the new flow has never touched the app (`derivedFromLegacy: true`), is derived from the legacy review state (`approved`/`in_review` flags and the legacy review status). Every lifecycle step is traced to Trackman with the legacy event closest to it: the submission that requests the review as `apps_review_requested`, every other step (including the reviewer's) as `apps_review_form_updated`, whose `review_form.event` is the timeline event the step appended. Auto-saving the draft (`PUT …/app-review/form`) is not a step and is not traced.","properties":{"appName":{"type":"string","description":"Name of the SDK app."},"appVersion":{"type":"integer","description":"Major version of the SDK app."},"phase":{"type":"string","enum":["dormant","preparing","review","changes_required","approved","updating","update_review","changes_required_update","rereview"],"description":"Lifecycle phase of the review. `dormant` → `start` → `preparing` → `submit` → `review`; a reviewer then approves (`approved`) or requests changes (`changes_required`, reopened with `start-rereview` → `rereview` → `submit` back to `review`). An approved listing is updated through `start-update` → `updating` → `submit` → `update_review`, whose outcomes are `approved` or `changes_required_update` (re-reviewed through `rereview` back to `update_review`). `cancel` steps back one phase on every track."},"reviewStep":{"type":"string","enum":["auto","manual"],"nullable":true,"description":"Sub-step while `phase` is `review`/`update_review` — `manual` means the submission waits with Make (where every submission starts), `auto` means Make sent the automatic-review notes and waits on the developer to implement and confirm them. `null` in every other phase."},"rereviewOrigin":{"type":"string","enum":["changes_required","changes_required_update"],"nullable":true,"description":"While `phase` is `rereview`, the phase the re-review was started from. `null` otherwise."},"derivedFromLegacy":{"type":"boolean","description":"`true` when `phase` was derived from legacy review state instead of stored new-flow state."},"draftForm":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"submittedForm":{"nullable":true,"allOf":[{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}}],"description":"Snapshot of `draftForm` taken at the last submit. Later draft edits do not change it."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last submit."},"events":{"type":"array","description":"Review history timeline, oldest first.","items":{"type":"object","properties":{"type":{"type":"string","description":"Event type. Developer-side (`actor: developer`): `preparation_started`, `submitted`, `cancelled`, `submission_withdrawn`, `auto_notes_confirmed`, `rereview_started`, `rereview_cancelled`, `resubmitted`, `update_started`, `update_submitted`, `update_withdrawn`, `update_cancelled`. Make-side (`actor: make`, with an optional `note`): `auto_notes_sent`, `approved`, `changes_requested`, `update_approved`, `update_changes_requested`."},"actor":{"type":"string","enum":["developer","make"],"description":"Which side of the review produced the event."},"note":{"type":"string","description":"Optional free-text detail (e.g. the reviewer's request). Omitted when empty."},"createdAt":{"type":"string","format":"date-time","description":"When the event happened."}}}},"updatedAt":{"type":"string","format":"date-time","nullable":true,"description":"Last modification of the new-flow state. `null` while no new-flow row exists."}}}}},"examples":{"updating":{"summary":"Update started on an approved listing","value":{"review":{"appName":"my-crm-app","appVersion":1,"phase":"updating","reviewStep":null,"rereviewOrigin":null,"derivedFromLegacy":false,"draftForm":{"vendorRelationship":"direct","apiDocsUrl":"https://developers.example.com"},"submittedForm":{"vendorRelationship":"direct","apiDocsUrl":"https://developers.example.com"},"submittedAt":"2026-08-24T10:20:00.000Z","events":[{"type":"preparation_started","actor":"developer","createdAt":"2026-08-24T10:00:00.000Z"},{"type":"submitted","actor":"developer","createdAt":"2026-08-24T10:20:00.000Z"},{"type":"approved","actor":"make","createdAt":"2026-08-25T09:00:00.000Z"},{"type":"update_started","actor":"developer","createdAt":"2026-09-01T08:00:00.000Z"}],"updatedAt":"2026-09-01T08:00:00.000Z"}}}}}}},"409":{"description":"The review is not `approved`.","content":{"application/json":{"schema":{"type":"object"},"examples":{"not-approved":{"summary":"Nothing approved to update","value":{"message":"Conflict.","detail":"Action \"startUpdate\" is not allowed while the review is \"review\".","code":"SC409"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/app-review/start-rereview":{"post":{"tags":["SDK Apps / Review"],"x-internal":true,"summary":"Start a re-review after changes were requested","description":"Reopens the form after a reviewer returned the submission: moves `changes_required` or `changes_required_update` to `rereview` and records where it came from in `rereviewOrigin`. The re-review fields (`whatChanged`, `updatedScenarioUrls`, `reRunConfirmed`, `contactsConfirmed`) become editable alongside the rest of the form. `submit` then rejoins the track it came from — `review` for a first review, `update_review` for an update — and `cancel` returns to the originating phase. An app returned through the legacy flow (legacy reviewer status \"feedback sent\", `derivedFromLegacy: true`) may start a re-review too; from then on the new flow owns the phase. Fails with `409` in any other phase. Only the app's author may do this. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-crm-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","description":"State of the new SDK app review flow for one app version. The lifecycle phase either comes from the new flow's own storage or, while the new flow has never touched the app (`derivedFromLegacy: true`), is derived from the legacy review state (`approved`/`in_review` flags and the legacy review status). Every lifecycle step is traced to Trackman with the legacy event closest to it: the submission that requests the review as `apps_review_requested`, every other step (including the reviewer's) as `apps_review_form_updated`, whose `review_form.event` is the timeline event the step appended. Auto-saving the draft (`PUT …/app-review/form`) is not a step and is not traced.","properties":{"appName":{"type":"string","description":"Name of the SDK app."},"appVersion":{"type":"integer","description":"Major version of the SDK app."},"phase":{"type":"string","enum":["dormant","preparing","review","changes_required","approved","updating","update_review","changes_required_update","rereview"],"description":"Lifecycle phase of the review. `dormant` → `start` → `preparing` → `submit` → `review`; a reviewer then approves (`approved`) or requests changes (`changes_required`, reopened with `start-rereview` → `rereview` → `submit` back to `review`). An approved listing is updated through `start-update` → `updating` → `submit` → `update_review`, whose outcomes are `approved` or `changes_required_update` (re-reviewed through `rereview` back to `update_review`). `cancel` steps back one phase on every track."},"reviewStep":{"type":"string","enum":["auto","manual"],"nullable":true,"description":"Sub-step while `phase` is `review`/`update_review` — `manual` means the submission waits with Make (where every submission starts), `auto` means Make sent the automatic-review notes and waits on the developer to implement and confirm them. `null` in every other phase."},"rereviewOrigin":{"type":"string","enum":["changes_required","changes_required_update"],"nullable":true,"description":"While `phase` is `rereview`, the phase the re-review was started from. `null` otherwise."},"derivedFromLegacy":{"type":"boolean","description":"`true` when `phase` was derived from legacy review state instead of stored new-flow state."},"draftForm":{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}},"submittedForm":{"nullable":true,"allOf":[{"type":"object","additionalProperties":false,"description":"The new review form. Every field is optional — any partial state is a valid auto-save; completeness is enforced by the client before submitting, not by the server. Link formats are checked when submitting: documentation links must be `http(s)` URLs and scenario links must point at a scenario of this zone (`https://<zone web domain>/<teamId>/scenarios/<scenarioId>/edit`).","properties":{"vendorRelationship":{"type":"string","enum":["direct","agreement","none"],"description":"The developer's relationship to the vendor of the integrated software."},"listingType":{"type":"string","enum":["verified","community"],"description":"Requested Marketplace listing type. The choice is only offered to Solution Partners without a vendor agreement."},"partnerProgramApplication":{"type":"string","enum":["technology","solution"],"description":"Make partner program the developer applies for together with this review, agreeing to the Make terms and conditions; omitted when not applying. Offered only to developers who are not Make partners yet, for the program their vendor relationship makes them eligible for: `none` → `solution`, otherwise `technology`."},"testScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Scenarios where the review team can see every module of the app run successfully. Each must be a scenario link of this zone when submitting."},"errorHandlingScenarioUrl":{"type":"string","maxLength":2048,"description":"Scenario that fails on purpose, demonstrating how the app surfaces an API error. Must be a scenario link of this zone when submitting."},"apiDocsUrl":{"type":"string","maxLength":2048,"description":"Documentation of the API the app calls. Must be an `http(s)` URL when submitting."},"homepageUrl":{"type":"string","maxLength":2048,"description":"Homepage of the integrated software, shown on the app's landing page. Must be an `http(s)` URL when submitting."},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":128},"description":"Marketplace categories the app belongs to."},"subcategories":{"type":"object","additionalProperties":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":128}},"description":"Selected subcategories, keyed by category."},"shortDescription":{"type":"string","maxLength":1024,"description":"Community listing only — short description of the app."},"pricing":{"type":"string","enum":["free","paid"],"description":"Community listing only — whether the app itself is free or paid."},"landingPageUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's own landing page. Must be an `http(s)` URL when submitting."},"appDocsUrl":{"type":"string","maxLength":2048,"description":"Community listing only — the app's documentation. Must be an `http(s)` URL when submitting."},"dataProcessingDescription":{"type":"string","maxLength":10000,"description":"Community listing only — how the app processes data. The developer is liable for this text."},"termsConsent":{"type":"boolean","description":"Community listing only — consent to the Make Apps Marketplace terms and conditions."},"supportContactName":{"type":"string","maxLength":255,"description":"Name Make forwards support and maintenance requests to."},"supportContactEmail":{"type":"string","maxLength":255,"description":"Email Make forwards support and maintenance requests to."},"trademarkConsent":{"type":"boolean","description":"Trademark compliance declaration."},"externalTcConsent":{"type":"boolean","description":"External service terms compliance declaration."},"whatChanged":{"type":"string","maxLength":10000,"description":"Update/re-review only — what changed in this version, or what was changed in response to the reviewer."},"updatedScenarioUrls":{"type":"array","maxItems":50,"items":{"type":"string","maxLength":2048},"description":"Update/re-review only — the test scenarios for the change, seeded from the approved submission. Each must be a scenario link of this zone when submitting."},"reRunConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that every scenario was re-run on the current app version."},"contactsConfirmed":{"type":"boolean","description":"Update/re-review only — confirmation that the developer and support contacts are up to date."}}}],"description":"Snapshot of `draftForm` taken at the last submit. Later draft edits do not change it."},"submittedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last submit."},"events":{"type":"array","description":"Review history timeline, oldest first.","items":{"type":"object","properties":{"type":{"type":"string","description":"Event type. Developer-side (`actor: developer`): `preparation_started`, `submitted`, `cancelled`, `submission_withdrawn`, `auto_notes_confirmed`, `rereview_started`, `rereview_cancelled`, `resubmitted`, `update_started`, `update_submitted`, `update_withdrawn`, `update_cancelled`. Make-side (`actor: make`, with an optional `note`): `auto_notes_sent`, `approved`, `changes_requested`, `update_approved`, `update_changes_requested`."},"actor":{"type":"string","enum":["developer","make"],"description":"Which side of the review produced the event."},"note":{"type":"string","description":"Optional free-text detail (e.g. the reviewer's request). Omitted when empty."},"createdAt":{"type":"string","format":"date-time","description":"When the event happened."}}}},"updatedAt":{"type":"string","format":"date-time","nullable":true,"description":"Last modification of the new-flow state. `null` while no new-flow row exists."}}}}},"examples":{"rereview":{"summary":"Re-review started after a first review was returned","value":{"review":{"appName":"my-crm-app","appVersion":1,"phase":"rereview","reviewStep":null,"rereviewOrigin":"changes_required","derivedFromLegacy":false,"draftForm":{"vendorRelationship":"direct","apiDocsUrl":"https://developers.example.com"},"submittedForm":{"vendorRelationship":"direct","apiDocsUrl":"https://developers.example.com"},"submittedAt":"2026-08-24T10:20:00.000Z","events":[{"type":"preparation_started","actor":"developer","createdAt":"2026-08-24T10:00:00.000Z"},{"type":"submitted","actor":"developer","createdAt":"2026-08-24T10:20:00.000Z"},{"type":"changes_requested","actor":"make","note":"Fix error handling in List Deals and resubmit.","createdAt":"2026-08-25T09:00:00.000Z"},{"type":"rereview_started","actor":"developer","createdAt":"2026-08-26T08:00:00.000Z"}],"updatedAt":"2026-08-26T08:00:00.000Z"}}}}}}},"409":{"description":"No changes were requested in the current phase.","content":{"application/json":{"schema":{"type":"object"},"examples":{"nothing-to-rereview":{"summary":"The submission is still in review","value":{"message":"Conflict.","detail":"Action \"startRereview\" is not allowed while the review is \"review\".","code":"SC409"}}}}}}}}},"/sdk/apps/{SDK_appName}/{SDK_appVersion}/publisher":{"get":{"tags":["SDK Apps / Publisher"],"x-internal":true,"summary":"Get the app author's publisher profile","description":"Returns the publisher profile (\"App developer contact\" of the new SDK app review flow) of the app's author — `publisher` is `null` while the author has no profile yet — together with the author's account email, which is the contact fallback while `publisher.contactEmail` is unset. The author gets the same profile `GET /sdk/publisher` serves. An administrator holding the `apps get` permission reads the developer's profile through the `/admin` prefix (`GET /admin/sdk/apps/{SDK_appName}/{SDK_appVersion}/publisher`), which is what the admin review page uses; anyone else is refused with `403` (IM002). The partner program carried by `partnerType` is assigned by Make administrators through `PATCH /admin/sdk/apps/{app}/{version}/publisher`. Responds `404` (IM013) when the app version does not exist. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true,"description":"Name of the SDK app.","example":"my-crm-app"},{"name":"SDK_appVersion","in":"path","schema":{"type":"integer"},"required":true,"description":"Major version of the SDK app.","example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"publisher":{"nullable":true,"allOf":[{"type":"object","description":"Account-level publisher profile of an SDK app developer (\"App developer contact\"). One profile per user; its values appear on the landing pages of all apps the user publishes.","properties":{"userId":{"type":"integer","description":"Owning user."},"authorName":{"type":"string","nullable":true,"description":"Author name shown as the publisher (non-partner variant)."},"contactEmail":{"type":"string","format":"email","nullable":true,"description":"Developer contact email. `null` means the account email is used."},"companyName":{"type":"string","nullable":true,"description":"Company (ISV) name shown as the publisher. For a Make partner it is the name their apps are published under, which the partner cannot change themselves — Make administrators set it through `PATCH /admin/sdk/apps/{app}/{version}/publisher`."},"partnerType":{"type":"string","enum":["technology","solution"],"nullable":true,"description":"Make partner program of the publisher; `null` means not a partner (the default). Assigned by Make administrators only, through `PATCH /admin/sdk/apps/{app}/{version}/publisher` — the developer's own `PATCH /sdk/publisher` cannot change it."},"hasLogo":{"type":"boolean","description":"Whether a company logo is stored (served by `GET /sdk/publisher/logo`). Make administrators set a partner's logo through `PUT /admin/sdk/apps/{app}/{version}/publisher/logo`."},"logoFilename":{"type":"string","nullable":true,"description":"Original filename of the uploaded logo."},"createdAt":{"type":"string","format":"date-time","description":"When the profile was created."},"updatedAt":{"type":"string","format":"date-time","description":"When the profile was last updated."}}}]},"authorEmail":{"type":"string","format":"email","description":"Account email of the app's author — the contact fallback while `publisher.contactEmail` is unset."}}},"examples":{"partner-profile":{"summary":"Author marked as a Technology Partner by an administrator","value":{"publisher":{"userId":42,"authorName":"Jane Developer","contactEmail":null,"companyName":"Acme Automations s.r.o.","partnerType":"technology","hasLogo":true,"logoFilename":"acme-logo.png","createdAt":"2026-08-20T09:00:00.000Z","updatedAt":"2026-10-07T10:00:00.000Z"},"authorEmail":"jane@example.com"}},"no-profile-yet":{"summary":"Author has not saved a profile yet","value":{"publisher":null,"authorEmail":"jane@example.com"}}}}}},"403":{"description":"The caller is neither the app's author nor an administrator holding `apps get`.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"}}},"examples":{"not-the-author":{"summary":"Another developer's app","value":{"code":"IM002","message":"Insufficient rights","detail":"Access denied."}}}}}},"404":{"description":"The app version does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"detail":{"type":"string"}}},"examples":{"app-not-found":{"summary":"Unknown app or version","value":{"code":"IM013","message":"Entity not found","detail":"SDK app not found."}}}}}}}}},"/sdk/app-review/categories":{"get":{"tags":["SDK Apps / Review"],"x-internal":true,"summary":"List review form categories","description":"Returns the active category taxonomy the new SDK app review form offers, in display order. The taxonomy is exactly two levels deep (category → subcategory) and is global product configuration — not per app and not per user, so every authenticated caller gets the same list. Identify a pick by its `slug`, not its `name`: that is what `PUT /sdk/apps/{app}/{version}/app-review/form` expects in `categories` / `subcategories`, and it is stable across relabelling. Categories retired by a later catalog sync stop appearing here, but their slugs keep resolving in review forms that already stored them. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:read"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"categories":{"type":"array","items":{"type":"object","description":"One category of the taxonomy offered by the new SDK app review form, with its subcategories. `slug` is the category's stable identity — it is what a review form stores in `categories` / `subcategories`, and it survives a rename of `name`. Array order is display order.","properties":{"slug":{"type":"string","maxLength":128,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"Stable identifier of the category. Either pinned explicitly by the catalog sync or derived from `name` (diacritics stripped, lowercased, every run of non-alphanumerics collapsed to a dash)."},"name":{"type":"string","maxLength":255,"description":"Human-readable label to show in the review form."},"subcategories":{"type":"array","description":"The category's subcategories in display order; empty when the category has none. The taxonomy is exactly two levels deep — a subcategory never has children of its own.","items":{"type":"object","properties":{"slug":{"type":"string","maxLength":128,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"Stable identifier of the subcategory, unique within its category (the same slug may appear under a different category)."},"name":{"type":"string","maxLength":255,"description":"Human-readable label to show in the review form."}}}}}}}}},"examples":{"catalog":{"summary":"The catalog as the review form renders it","value":{"categories":[{"slug":"app-families","name":"App Families","subcategories":[{"slug":"microsoft-enterprise","name":"Microsoft (Enterprise)"},{"slug":"pipedrive","name":"Pipedrive"}]},{"slug":"built-in-apps","name":"Built-in Apps","subcategories":[{"slug":"universal-connectors","name":"Universal Connectors"},{"slug":"mobile-app","name":"Mobile App"},{"slug":"built-in-tools","name":"Built-in Tools"}]}]}},"empty-catalog":{"summary":"No catalog has been synced yet","value":{"categories":[]}}}}}}}}},"/sdk/app-review/support-contacts":{"get":{"tags":["SDK Apps / Review"],"x-internal":true,"summary":"List the caller's support contacts","description":"Returns the distinct support contacts the caller has entered in the review forms of their own SDK apps, most recently used first — the list the review form's support-contact picker offers, so a contact already used for one app can be reused for another. Contacts are read from the review drafts (`supportContactName` / `supportContactEmail` of `PUT /sdk/apps/{app}/{version}/app-review/form`) and deduplicated by email compared case-insensitively; each entry carries the name and email spelling of its most recent use. Drafts without an email are skipped. The list is scoped to the authenticated user — apps of other authors never appear, and an administrator calling this gets their own contacts, not a developer's. An empty array means the caller has not entered a support contact anywhere yet. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:read"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"supportContacts":{"type":"array","description":"Distinct contacts, most recently used first.","items":{"type":"object","description":"A support contact as entered in the support-contact section of the new SDK app review form (`supportContactName` / `supportContactEmail` of the review draft).","properties":{"name":{"type":"string","maxLength":255,"description":"Contact name as last entered for this email. Empty string when the draft carried an email without a name."},"email":{"type":"string","maxLength":255,"description":"Contact email, in the spelling of its most recent use. Contacts are distinct by email compared case-insensitively."}},"required":["name","email"]}}}},"examples":{"contacts":{"summary":"Contacts reused across two apps","value":{"supportContacts":[{"name":"Acme Automations support","email":"support@acme-automations.com"},{"name":"Acme billing","email":"billing@acme-automations.com"}]}},"no-contacts":{"summary":"No support contact entered in any review form yet","value":{"supportContacts":[]}}}}}}}}},"/sdk/github/owners":{"get":{"tags":["SDK Apps / GitHub"],"x-internal":true,"summary":"List GitHub owners for a connection","description":"Lists the GitHub owners reachable through the given connection: the connection's own account (`user`) first, followed by every organization its OAuth token can see (`organization`). Same list as `GET /sdk/apps/{SDK_appName}/{SDK_appVersion}/github/owners`, but without an app in the path — the \"import an app from GitHub\" flow has to pick an owner before the SDK app it creates exists. Access is gated by the connection: only connections reachable by the calling user resolve. Listing organizations requires the connection's token to carry the `read:org` scope — connections created before that scope was requested (or tokens lacking it) degrade gracefully to the personal account (plus any public-membership organizations GitHub still returns) instead of failing. Any other GitHub failure fails the call with `424` rather than returning a shortened owner list. A caller who cannot reach the connection's team gets `403`.","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"connectionId","in":"query","schema":{"type":"integer","minimum":1},"required":true,"description":"ID of the Make GitHub connection whose reachable owners to list.","example":137}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"owners":{"type":"array","items":{"type":"object","properties":{"login":{"type":"string","description":"GitHub login of the account or organization."},"type":{"type":"string","enum":["user","organization"],"description":"`user` for the connection's own account, `organization` for an org it belongs to."}}}}}},"examples":{"list-owners":{"summary":"Personal account plus two organizations","value":{"owners":[{"login":"octocat","type":"user"},{"login":"acme-inc","type":"organization"},{"login":"globex","type":"organization"}]}}}}}},"400":{"description":"The connection does not exist or is not a GitHub connection.","content":{"application/json":{"schema":{"type":"object"},"examples":{"not-a-github-connection":{"summary":"Connection is not a GitHub connection","value":{"message":"Connection is not a GitHub connection or does not exist.","code":"IM005"}}}}}},"403":{"description":"The calling user cannot reach the connection.","content":{"application/json":{"schema":{"type":"object"},"examples":{"insufficient-rights":{"summary":"Connection belongs to a team the caller has no access to","value":{"message":"Insufficient rights","code":"IM002"}}}}}},"424":{"description":"GitHub rejected a request or was unreachable (invalid/revoked token, API outage). A `403` on the organization listing alone is the one exception — it degrades to the personal account, see the description above.","content":{"application/json":{"schema":{"type":"object"},"examples":{"github-failed":{"summary":"GitHub call failed","value":{"message":"GitHub API GET /user failed: 401 Bad credentials","code":"SC424"}}}}}}}}},"/sdk/publisher":{"get":{"tags":["SDK Apps / Publisher"],"x-internal":true,"summary":"Get publisher profile","description":"Returns the calling user's account-level publisher profile (\"App developer contact\" of the new SDK app review flow), or `null` when the user has no profile yet. The profile is self-scoped — the only other way to it is `GET /sdk/apps/{SDK_appName}/{SDK_appVersion}/publisher`, which serves an app author's profile to the author and to administrators. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:read"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"publisher":{"nullable":true,"allOf":[{"type":"object","description":"Account-level publisher profile of an SDK app developer (\"App developer contact\"). One profile per user; its values appear on the landing pages of all apps the user publishes.","properties":{"userId":{"type":"integer","description":"Owning user."},"authorName":{"type":"string","nullable":true,"description":"Author name shown as the publisher (non-partner variant)."},"contactEmail":{"type":"string","format":"email","nullable":true,"description":"Developer contact email. `null` means the account email is used."},"companyName":{"type":"string","nullable":true,"description":"Company (ISV) name shown as the publisher. For a Make partner it is the name their apps are published under, which the partner cannot change themselves — Make administrators set it through `PATCH /admin/sdk/apps/{app}/{version}/publisher`."},"partnerType":{"type":"string","enum":["technology","solution"],"nullable":true,"description":"Make partner program of the publisher; `null` means not a partner (the default). Assigned by Make administrators only, through `PATCH /admin/sdk/apps/{app}/{version}/publisher` — the developer's own `PATCH /sdk/publisher` cannot change it."},"hasLogo":{"type":"boolean","description":"Whether a company logo is stored (served by `GET /sdk/publisher/logo`). Make administrators set a partner's logo through `PUT /admin/sdk/apps/{app}/{version}/publisher/logo`."},"logoFilename":{"type":"string","nullable":true,"description":"Original filename of the uploaded logo."},"createdAt":{"type":"string","format":"date-time","description":"When the profile was created."},"updatedAt":{"type":"string","format":"date-time","description":"When the profile was last updated."}}}]}}},"examples":{"existing-profile":{"summary":"A fully filled-in profile","value":{"publisher":{"userId":42,"authorName":"Jane Developer","contactEmail":"jane@example.com","companyName":"Acme Automations s.r.o.","partnerType":null,"hasLogo":true,"logoFilename":"acme-logo.png","createdAt":"2026-08-20T09:00:00.000Z","updatedAt":"2026-08-24T10:00:00.000Z"}}},"no-profile":{"summary":"User has no profile yet","value":{"publisher":null}}}}}}}},"patch":{"tags":["SDK Apps / Publisher"],"x-internal":true,"summary":"Update publisher profile","description":"Creates or updates the calling user's publisher profile with the provided fields (at least one is required; omitted fields keep their value, `null` clears a field). The partner program (`partnerType`) is not among them — Make administrators assign it through `PATCH /admin/sdk/apps/{app}/{version}/publisher`. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"authorName":{"type":"string","maxLength":255,"nullable":true,"description":"Author name shown as the publisher (non-partner variant)."},"contactEmail":{"type":"string","format":"email","maxLength":255,"nullable":true,"description":"Developer contact email. `null` falls back to the account email."},"companyName":{"type":"string","maxLength":255,"nullable":true,"description":"Company (ISV) name shown as the publisher."}}},"examples":{"updated-profile":{"summary":"Set the author name and company","value":{"authorName":"Jane Developer","companyName":"Acme Automations s.r.o."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"publisher":{"type":"object","description":"Account-level publisher profile of an SDK app developer (\"App developer contact\"). One profile per user; its values appear on the landing pages of all apps the user publishes.","properties":{"userId":{"type":"integer","description":"Owning user."},"authorName":{"type":"string","nullable":true,"description":"Author name shown as the publisher (non-partner variant)."},"contactEmail":{"type":"string","format":"email","nullable":true,"description":"Developer contact email. `null` means the account email is used."},"companyName":{"type":"string","nullable":true,"description":"Company (ISV) name shown as the publisher. For a Make partner it is the name their apps are published under, which the partner cannot change themselves — Make administrators set it through `PATCH /admin/sdk/apps/{app}/{version}/publisher`."},"partnerType":{"type":"string","enum":["technology","solution"],"nullable":true,"description":"Make partner program of the publisher; `null` means not a partner (the default). Assigned by Make administrators only, through `PATCH /admin/sdk/apps/{app}/{version}/publisher` — the developer's own `PATCH /sdk/publisher` cannot change it."},"hasLogo":{"type":"boolean","description":"Whether a company logo is stored (served by `GET /sdk/publisher/logo`). Make administrators set a partner's logo through `PUT /admin/sdk/apps/{app}/{version}/publisher/logo`."},"logoFilename":{"type":"string","nullable":true,"description":"Original filename of the uploaded logo."},"createdAt":{"type":"string","format":"date-time","description":"When the profile was created."},"updatedAt":{"type":"string","format":"date-time","description":"When the profile was last updated."}}}}},"examples":{"updated-profile":{"summary":"Profile after the update","value":{"publisher":{"userId":42,"authorName":"Jane Developer","contactEmail":null,"companyName":"Acme Automations s.r.o.","partnerType":null,"hasLogo":false,"logoFilename":null,"createdAt":"2026-08-24T10:00:00.000Z","updatedAt":"2026-08-24T10:00:00.000Z"}}}}}}},"400":{"description":"No known field to update was provided (at least one of `authorName`, `contactEmail`, `companyName` is required). The per-field validation failures are listed in `suberrors`.","content":{"application/json":{"schema":{"type":"object"},"examples":{"no-field-provided":{"summary":"Empty body","value":{"message":"Bad Request","code":"SC400"}}}}}}}}},"/sdk/publisher/logo":{"get":{"tags":["SDK Apps / Publisher"],"x-internal":true,"summary":"Get publisher logo","description":"Serves the calling user's stored company logo as a PNG image, or `404` when no logo is stored. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:read"]}],"responses":{"200":{"description":"The stored logo.","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"404":{"description":"No logo is stored.","content":{"application/json":{"schema":{"type":"object"},"examples":{"no-logo":{"summary":"No logo uploaded yet","value":{"message":"Logo not found"}}}}}}}},"put":{"tags":["SDK Apps / Publisher"],"x-internal":true,"summary":"Upload publisher logo","description":"Stores the company logo, creating the publisher profile when it does not exist yet. The logo is sent as the raw request body with content type `image/png` and must be a square PNG between 512×512 and 2048×2048 pixels — the same requirements as SDK app icons. A missing or non-binary body responds with `400` (IM005), an invalid or non-square PNG with `400` (SC400), and a file over 500 kB with `413`. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"filename","in":"query","schema":{"type":"string","minLength":1,"maxLength":255},"required":false,"description":"Original filename of the uploaded logo, shown back in the UI.","example":"acme-logo.png"}],"requestBody":{"required":true,"content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"uploaded":{"summary":"Logo stored","value":{"changed":true}}}}}},"400":{"description":"The body is missing, or is not a valid square PNG within the required dimensions.","content":{"application/json":{"schema":{"type":"object"},"examples":{"missing-body":{"summary":"No raw image/png body was sent","value":{"message":"Send the logo as a raw request body with content-type image/png.","code":"IM005"}},"invalid-png":{"summary":"Body is not a valid PNG","value":{"message":"Bad Request","code":"SC400","detail":"Failed to save image. Invalid PNG image. Icon requirements: PNG format. Square size from 512x512 to 2048x2048 is required. File size must not exceed 500 kB."}}}}}},"413":{"description":"The logo exceeds the maximum file size.","content":{"application/json":{"schema":{"type":"object"},"examples":{"too-large":{"summary":"Logo over 500 kB","value":{"message":"Payload is too large","code":"SC413","detail":"Failed to save image. Image exceeded max file size. Icon requirements: PNG format. Square size from 512x512 to 2048x2048 is required. File size must not exceed 500 kB."}}}}}}}},"delete":{"tags":["SDK Apps / Publisher"],"x-internal":true,"summary":"Delete publisher logo","description":"Removes the stored company logo. Succeeds with `204` even when no logo was stored — and in that case does not create a publisher profile. Available only while the `is_sdk_app_review_enabled` feature flag is on, otherwise responds with `400` (IM903).","security":[{"token":["sdk-apps:write"]}],"responses":{"204":{"description":"Logo removed."}}}},"/sdk/apps/{SDK_appName}/connections":{"post":{"tags":["SDK Apps / Connections"],"summary":"Create Connection","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["oauth","oauth-refresh","oauth-resowncre","oauth-clicre","oauth-1","apikey","basic","other"]},"label":{"type":"string"}}},"example":{"type":"basic","label":"Hello Charlie"}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appConnection":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}}}}},"examples":{"create-connection":{"summary":"Create Connection","value":{"appConnection":{"name":"custom-app-13","label":"Main Connection","type":"basic"}}}}}}}}},"get":{"tags":["SDK Apps / Connections"],"summary":"List App Connections","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appConnections":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"},"parameters":{"type":"object","description":"Connection parameters. The structure depends on the connection type."},"app_version":{"type":"string","description":"Version of the app this connection belongs to."},"alias_to":{"type":"string","nullable":true,"description":"The original name of an aliased connection."}}}}}},"examples":{"list-app-connections":{"summary":"List App Connections","value":{"appConnections":[{"name":"testConnection","label":"Test Connection","type":"oauth","parameters":{},"app_version":"1","alias_to":null},{"name":"postman-test-app-6-1","label":"Test Connection","type":"oauth"},{"name":"postman-test-app-6-12","label":"Test Connection","type":"oauth"},{"name":"postman-test-app-6-13","label":"Test Connection","type":"oauth"},{"name":"postman-test-app-6-14","label":"Test Connection","type":"oauth"},{"name":"postman-test-app-6-15","label":"Test Connection","type":"oauth"},{"name":"postman-test-app-6-16","label":"Test Connection","type":"oauth"}]}}}}}}}}},"/sdk/apps/connections/{SDK_connectionName}":{"get":{"tags":["SDK Apps / Connections"],"summary":"Get Connection","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_connectionName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appConnection":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"},"connectedSystemName":{"type":"string","nullable":true},"appVersion":{"type":"string"},"redirectUri":{"type":"string","description":"Only for OAuth connections"}}}}},"examples":{"get-connection":{"summary":"Get Connection","value":{"appConnection":{"name":"custom-app-13","label":"Main Connection","type":"basic","appVersion":"1"}}}}}}}}},"patch":{"tags":["SDK Apps / Connections"],"summary":"Update Connection","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"},"connectedSystemName":{"type":"string","nullable":true}}},"example":{"label":"Main Connection","connectedSystemName":"my-agent"}}}},"parameters":[{"name":"SDK_connectionName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appConnection":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}}}}},"examples":{"update-connection":{"summary":"Update Connection","value":{"appConnection":{"name":"charlie-1","label":"Main Connection","type":"basic","connectedSystemName":"my-agent"}}}}}}}}},"delete":{"tags":["SDK Apps / Connections"],"summary":"Delete Connection","description":"Deletes a connection. The connection must not be in use (e.g. referenced by a webhook/module/RPC or attached to an endpoint), otherwise the request is rejected.","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_connectionName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appConnection":{"type":"string"}}},"examples":{"delete-connection":{"summary":"Delete Connection","value":{"appConnection":"custom-app-13"}}}}}},"400":{"description":"The connection is in use and cannot be deleted (e.g. attached to an endpoint or a webhook).","content":{"application/json":{"schema":{"type":"object"},"examples":{"used-by-endpoint":{"summary":"Connection is attached to an endpoint","value":{"detail":"Connection is used by an Endpoint.","code":"IM005"}},"used-by-webhook":{"summary":"Connection is referenced by a webhook","value":{"detail":"Connection is used by a Webhook.","code":"IM005"}}}}}}}}},"/sdk/apps/connections/{SDK_connectionName}/{SDK_connectionSection}":{"get":{"tags":["SDK Apps / Connections"],"summary":"Get Connection Section","security":[{"token":["sdk-apps:read"]}],"description":"Available sections: api, parameters, scopes, scope, install, installSpec<br />\n","parameters":[{"name":"SDK_connectionName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_connectionSection","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"authorize":{"type":"object","properties":{"qs":{"type":"object","properties":{"scope":{"type":"string"},"client_id":{"type":"string"},"redirect_uri":{"type":"string"},"response_type":{"type":"string"}}},"url":{"type":"string","format":"uri"},"response":{"type":"object","properties":{"temp":{"type":"object","properties":{"code":{"type":"string"}}}}}}},"token":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"body":{"type":"object","properties":{"code":{"type":"string"},"client_id":{"type":"string"},"grant_type":{"type":"string"},"redirect_uri":{"type":"string"},"client_secret":{"type":"string"}}},"type":{"type":"string"},"method":{"type":"string"},"response":{"type":"object","properties":{"data":{"type":"object","properties":{"accessToken":{"type":"string"}}}}},"log":{"type":"object","properties":{"sanitize":{"type":"array","items":{"type":"string"}}}}}},"info":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"headers":{"type":"object","properties":{"authorization":{"type":"string"}}},"response":{"type":"object","properties":{"uid":{"type":"string"},"metadata":{"type":"object","properties":{"type":{"type":"string"},"value":{"type":"string"}}}}},"log":{"type":"object","properties":{"sanitize":{"type":"array","items":{"type":"string"}}}}}},"invalidate":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"headers":{"type":"object","properties":{"authorization":{"type":"string"}}},"log":{"type":"object","properties":{"sanitize":{"type":"array","items":{"type":"string"}}}}}}}},"examples":{"get-connection-section":{"summary":"Get Connection Section","value":{"authorize":{"qs":{"scope":"{{join(oauth.scope, ',')}}","client_id":"{{ifempty(parameters.clientId, common.clientId)}}","redirect_uri":"{{oauth.redirectUri}}","response_type":"code"},"url":"https://www.example.com/oauth/authorize","response":{"temp":{"code":"{{query.code}}"}}},"token":{"url":"https://www.example.com/api/token","body":{"code":"{{temp.code}}","client_id":"{{ifempty(parameters.clientId, common.clientId)}}","grant_type":"authorization_code","redirect_uri":"{{oauth.redirectUri}}","client_secret":"{{ifempty(parameters.clientSecret, common.clientSecret)}}"},"type":"urlencoded","method":"POST","response":{"data":{"accessToken":"{{body.access_token}}"}},"log":{"sanitize":["request.body.code","request.body.client_secret","response.body.access_token"]}},"info":{"url":"https://www.example.com/api/whoami","headers":{"authorization":"Bearer {{connection.accessToken}}"},"response":{"uid":"{{body.id}}","metadata":{"type":"text","value":"{{body.user}}"}},"log":{"sanitize":["request.headers.authorization"]}},"invalidate":{"url":"https://www.example.com/oauth/invalidate","headers":{"authorization":"Bearer {{connection.accessToken}}"},"log":{"sanitize":["request.headers.authorization"]}}}}}}}}}},"put":{"tags":["SDK Apps / Connections"],"summary":"Set Connection Section","security":[{"token":["sdk-apps:write"]}],"description":"Available sections: api, parameters, scopes, scope, installSpec, install<br />\n","requestBody":{"content":{"application/json":{"schema":{"description":"The structure of the request body varies depending on the section being updated. It can be a JSON object or array.","oneOf":[{"type":"object"},{"type":"array","items":{"type":"object"}}]},"example":[{"name":"apiKey","type":"text","label":"API Key","required":true}]}}},"parameters":[{"name":"SDK_connectionName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_connectionSection","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"change":{"type":"object","properties":{"id":{"type":"integer"},"group":{"type":"string"},"item":{"type":"string"},"code":{"type":"string"}}}}},"examples":{"set-connection-section":{"summary":"Set Connection Section","value":{"change":{"id":12345,"group":"apps_connections","item":"my-connection-name","code":"parameters"}}}}}}}}}},"/sdk/apps/connections/{SDK_connectionName}/common":{"get":{"tags":["SDK Apps / Connections"],"summary":"Get Connection Common","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_connectionName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","description":"The common data for the connection. The structure of this object is not fixed and depends on the connection's configuration."},"examples":{"get-connection-common":{"summary":"Example of a common data object","value":{"clientId":"your-client-id","clientSecret":"your-client-secret"}}}}}}}},"put":{"tags":["SDK Apps / Connections"],"summary":"Set Connection Common","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"The common data for the connection. The structure of this object is not fixed and depends on the connection's configuration."},"example":{"clientId":"your-client-id","clientSecret":"your-client-secret"}}}},"parameters":[{"name":"SDK_connectionName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"examples":{"set-connection-common":{"summary":"Set Connection Common","value":{"changed":true}}}}}}}}},"/sdk/apps/{SDK_appName}/webhooks":{"post":{"tags":["SDK Apps / Webhooks"],"summary":"Create Webhook","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"label":{"type":"string"},"connection":{"type":"string"}}},"example":{"type":"web","label":"Watch Events","connection":"my-connection"}}}},"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true},{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"application/json"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appWebhook":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}}}}},"examples":{"create-webhook":{"summary":"Create Webhook","value":{"appWebhook":{"name":"my-app-1","label":"Watch Events","type":"web"}}}}}}}}},"get":{"tags":["SDK Apps / Webhooks"],"summary":"List App Webhooks","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_appName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appWebhooks":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"},"parameters":{"type":"object"},"app_version":{"type":"integer"}}}}}},"examples":{"list-app-webhooks":{"summary":"List App Webhooks","value":{"appWebhooks":[{"name":"postman-test-app-6-1","label":"Test Connection","type":"web","parameters":{},"app_version":1},{"name":"aaaa","label":"Test Connection","type":"web","parameters":{},"app_version":1},{"name":"postman-test-app-6-12","label":"Test Connection","type":"web","parameters":{},"app_version":1},{"name":"postman-test-app-6-13","label":"Test Connection","type":"web","parameters":{},"app_version":1}]}}}}}}}}},"/sdk/apps/webhooks/{SDK_webhookName}":{"get":{"tags":["SDK Apps / Webhooks"],"summary":"Get Webhook","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_webhookName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appWebhook":{"type":"object","properties":{"appName":{"type":"string"},"appVersion":{"type":"integer"},"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"},"connection":{"type":"string","nullable":true},"altConnection":{"type":"string","nullable":true},"api":{"type":"object"},"parameters":{"type":"object"},"attach":{"type":"object"},"detach":{"type":"object"},"update":{"type":"object"},"scope":{"type":"object"},"changes":{"type":"object"},"aliasTo":{"type":"string","nullable":true},"endpoint":{"type":"string"},"shieldEndpoint":{"type":"string"}}}}},"examples":{"get-webhook":{"summary":"Get Webhook","value":{"appWebhook":{"appName":"custom-app","appVersion":1,"name":"custom-app-12","label":"Watch Events","type":"web","connection":"custom-app-1","altConnection":null,"api":{},"parameters":{},"attach":{},"detach":{},"update":{},"scope":{},"changes":{},"aliasTo":null,"endpoint":"https://hook.integromat.com/app/custom-app-12/...","shieldEndpoint":"https://shield.integromat.com/app/custom-app-12/..."}}}}}}}}},"patch":{"tags":["SDK Apps / Webhooks"],"summary":"Update Webhook","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"},"connection":{"type":"string","nullable":true},"altConnection":{"type":"string","nullable":true}}},"example":{"label":"Test Renamed","connection":"my-connection","altConnection":null}}}},"parameters":[{"name":"SDK_webhookName","in":"path","schema":{"type":"string"},"required":true},{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"application/json"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appWebhook":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"},"connection":{"type":"string","nullable":true},"altConnection":{"type":"string","nullable":true}}}}},"examples":{"update-webhook":{"summary":"Update Webhook","value":{"appWebhook":{"name":"charlie-1","label":"Test Renamed","type":"web","connection":null,"altConnection":null}}}}}}}}},"delete":{"tags":["SDK Apps / Webhooks"],"summary":"Delete Webhook","security":[{"token":["sdk-apps:write"]}],"parameters":[{"name":"SDK_webhookName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"appWebhook":{"type":"string"}}},"examples":{"delete-webhook":{"summary":"Delete Webhook","value":{"appWebhook":"custom-app-12"}}}}}}}}},"/sdk/apps/webhooks/{SDK_webhookName}/{SDK_webhookSection}":{"get":{"tags":["SDK Apps / Webhooks"],"summary":"Get Webhook Section","security":[{"token":["sdk-apps:read"]}],"parameters":[{"name":"SDK_webhookName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_webhookSection","in":"path","schema":{"type":"string","enum":["api","parameters","attach","detach","update","scope"]},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"output":{"type":"string"}}},"examples":{"get-webhook-section":{"summary":"Get Webhook Section","value":{"output":"{{body}}"}}}}}}}},"put":{"tags":["SDK Apps / Webhooks"],"summary":"Set Webhook Section","security":[{"token":["sdk-apps:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"output":{"type":"string"},"test":{"type":"boolean"}}},"example":{"output":"{{body}}","test":true}}}},"parameters":[{"name":"SDK_webhookName","in":"path","schema":{"type":"string"},"required":true},{"name":"SDK_webhookSection","in":"path","schema":{"type":"string","enum":["api","parameters","attach","detach","update","scope"]},"required":true},{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"application/jsonc"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"change":{"type":"object"}}},"examples":{"set-webhook-section":{"summary":"Set Webhook Section","value":{"change":{}}}}}}}}}},"/sdk/apps/connections/{SDK_connectionName}/recreate":{"post":{"tags":["SDK Apps / Connections"],"summary":"Recreate Connection","security":[{"token":["sdk-apps:write"]}],"description":"Recreates an existing app connection and synchronises it with HQ.\n","parameters":[{"name":"SDK_connectionName","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","description":"An empty object is returned on successful recreation."},"examples":{"recreate-connection":{"summary":"Recreate Connection","value":{}}}}}}}}},"/private-spaces":{"get":{"tags":["Private spaces"],"summary":"List private spaces","description":"Gets the list of private spaces in the organization with specified `organizationId`.\n\nRequires the `personal team manage` organization permission (admins: `organization view`) and the `private-spaces:read` scope. Members without that permission receive `403` (`IM002`); they can list their own private spaces with `GET /organizations?cols[]=privateSpaces` instead.\n\nAvailable on app zones only.\n","security":[{"token":["private-spaces:read"]}],"parameters":[{"name":"organizationId","in":"query","schema":{"type":"integer"},"required":true,"example":1,"description":"The ID of the organization."},{"name":"externalId","in":"query","schema":{"type":"string"},"required":false,"example":"42","description":"Filter private spaces by external ID."},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"privateSpaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the private space."},"name":{"type":"string","description":"The name of the private space."},"organizationId":{"type":"integer","description":"The ID of the organization the private space belongs to."},"globalAgentsEnabled":{"type":"boolean","description":"Whether global agents are enabled for this private space."},"type":{"type":"string","enum":["personal"],"description":"The type of the space. Always `personal`."},"privateSpaceOwnerName":{"type":"string","description":"The name of the private space owner."},"privateSpaceOwnerEmail":{"type":"string","format":"email","description":"The email address of the private space owner."},"privateSpaceOwnerId":{"type":"integer","description":"The ID of the private space owner."},"operationsLimit":{"type":"integer","nullable":true,"description":"The maximum number of operations allowed. `null` if no limit is set."},"transferLimit":{"type":"string","nullable":true,"description":"The maximum data transfer allowed in bytes. `null` if no limit is set."},"consumedOperations":{"type":"integer","nullable":true,"description":"The number of operations consumed in the current period."},"consumedTransfer":{"type":"string","nullable":true,"description":"The amount of data transfer consumed in bytes in the current period."},"isPaused":{"type":"boolean","nullable":true,"description":"Whether the private space is paused due to exceeding limits."},"consumedCenticredits":{"type":"integer","nullable":true,"description":"The number of centicredits consumed in the current period."}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"example":{"default-cols":{"summary":"List private spaces with default columns","privateSpaces":[{"id":10,"name":"John's space","organizationId":1,"globalAgentsEnabled":false,"type":"personal","privateSpaceOwnerName":"John Doe","privateSpaceOwnerEmail":"john.doe@example.com","privateSpaceOwnerId":42}],"pg":{"sortBy":"name","sortDir":"asc","limit":10000,"offset":0}},"all-cols":{"summary":"List private spaces with all columns","privateSpaces":[{"id":10,"name":"John's space","organizationId":1,"globalAgentsEnabled":false,"type":"personal","privateSpaceOwnerName":"John Doe","privateSpaceOwnerEmail":"john.doe@example.com","privateSpaceOwnerId":42,"operationsLimit":10000,"transferLimit":"536870912","consumedOperations":42,"consumedTransfer":"1024","isPaused":false,"consumedCenticredits":500}],"pg":{"sortBy":"name","sortDir":"asc","limit":10000,"offset":0}}}}}},"403":{"description":"The caller lacks the `personal team manage` permission on the organization (`IM002`).","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Insufficient rights.","code":"IM002"}}}}}}},"/private-spaces/{privateSpaceId}":{"get":{"tags":["Private spaces"],"summary":"Get a private space","description":"Returns the details of a single private space. Requires the `private-spaces:read` scope. Users with the `personal team manage` organization permission can get any private space in the organization (admins: `organization view`). Other users need the `personal team own view` organization permission and can only get their own private space: callers lacking the permission receive `403` (`IM002`), and anyone else's private space returns `404`. When called with an API token or OAuth, the caller must also be a member of the private space (its owner or an observer); otherwise the API responds with `403`.","security":[{"token":["private-spaces:read"]}],"parameters":[{"name":"privateSpaceId","in":"path","schema":{"type":"integer"},"required":true,"example":10,"description":"The ID of the private space."},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"privateSpace":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the private space."},"name":{"type":"string","description":"The name of the private space."},"organizationId":{"type":"integer","description":"The ID of the organization the private space belongs to."},"globalAgentsEnabled":{"type":"boolean","description":"Whether global agents are enabled for this private space."},"type":{"type":"string","enum":["personal"],"description":"The type of the space. Always `personal`."},"privateSpaceOwnerName":{"type":"string","description":"The name of the private space owner."},"privateSpaceOwnerEmail":{"type":"string","format":"email","description":"The email address of the private space owner."},"privateSpaceOwnerId":{"type":"integer","description":"The ID of the private space owner."},"operationsLimit":{"type":"integer","nullable":true,"description":"The maximum number of operations allowed. `null` if no limit is set."},"transferLimit":{"type":"string","nullable":true,"description":"The maximum data transfer allowed in bytes. `null` if no limit is set."},"consumedOperations":{"type":"integer","nullable":true,"description":"The number of operations consumed in the current period."},"consumedTransfer":{"type":"string","nullable":true,"description":"The amount of data transfer consumed in bytes in the current period."},"isPaused":{"type":"boolean","nullable":true,"description":"Whether the private space is paused due to exceeding limits."},"consumedCenticredits":{"type":"integer","nullable":true,"description":"The number of centicredits consumed in the current period."},"operations":{"type":"string","description":"Total operations consumed since last reset (from Elasticsearch)."},"transfer":{"type":"string","description":"Total data transfer consumed since last reset in bytes (from Elasticsearch)."},"centicredits":{"type":"string","description":"Total centicredits consumed since last reset (from Elasticsearch)."}}}}},"example":{"privateSpace":{"id":10,"name":"John's space","organizationId":1,"globalAgentsEnabled":false,"type":"personal","privateSpaceOwnerName":"John Doe","privateSpaceOwnerEmail":"john.doe@example.com","privateSpaceOwnerId":42}}}}}}},"patch":{"tags":["Private spaces"],"summary":"Update a private space","description":"Updates a private space. Currently supports changing the operations limit (credit limit). Requires the `personal team manage` organization permission (admins: `organization edit`) and the `private-spaces:write` scope.","security":[{"token":["private-spaces:write"]}],"parameters":[{"name":"privateSpaceId","in":"path","schema":{"type":"integer"},"required":true,"example":10,"description":"The ID of the private space."},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"required":false,"description":"When `true`, confirms the operation even if the new limit is below the current consumption. This will pause the private space."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operationsLimit":{"type":"integer","nullable":true,"minimum":0,"maximum":2000000000,"description":"Optional. The new operations limit for the private space. Transfer limit is auto-calculated. Set to `null` to remove limits, omit to leave unchanged. The maximum matches the highest number of credits an organization can be licensed for.","example":10000}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"privateSpace":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the private space."},"name":{"type":"string","description":"The name of the private space."},"organizationId":{"type":"integer","description":"The ID of the organization the private space belongs to."},"deleted":{"type":"boolean","description":"Whether the private space is deleted."},"externalId":{"type":"string","nullable":true,"description":"The external ID of the private space."},"globalAgentsEnabled":{"type":"boolean","description":"Whether global agents are enabled for this private space."},"type":{"type":"string","enum":["personal"]},"privateSpaceOwnerName":{"type":"string","description":"The name of the private space owner."},"privateSpaceOwnerEmail":{"type":"string","description":"The email of the private space owner."},"privateSpaceOwnerId":{"type":"integer","description":"The ID of the private space owner."},"operationsLimit":{"type":"integer","nullable":true,"description":"The maximum number of operations allowed."},"transferLimit":{"type":"string","nullable":true,"description":"The maximum data transfer allowed in bytes."},"consumedOperations":{"type":"integer","description":"The number of operations consumed in the current period."},"consumedTransfer":{"type":"string","description":"The amount of data transfer consumed in bytes."},"isPaused":{"type":"boolean","description":"Whether the private space is paused."},"consumedCenticredits":{"type":"integer","description":"The number of centicredits consumed in the current period."}}}}},"example":{"privateSpace":{"id":10,"name":"John's space","organizationId":1,"deleted":false,"externalId":null,"globalAgentsEnabled":false,"type":"personal","privateSpaceOwnerName":"John Doe","privateSpaceOwnerEmail":"john.doe@example.com","privateSpaceOwnerId":42,"operationsLimit":10000,"transferLimit":"536870912","consumedOperations":42,"consumedTransfer":"1024","isPaused":false,"consumedCenticredits":500}}}}}}}},"/private-spaces/bulk":{"patch":{"tags":["Private spaces"],"summary":"Set the credit limit of multiple private spaces","x-internal":true,"description":"Sets one operations (credit) limit on up to 100 private spaces of an organization in a single request. This is the bulk counterpart of `PATCH /private-spaces/{privateSpaceId}`.\n\nList the target spaces in `privateSpaceIds` (duplicates are ignored). `operationsLimit` is an integer number of credits, or `null` to remove the limit. The transfer limit is derived from the operations limit automatically. A limit of `0` is a real limit: spaces whose limit changes to `0` are paused.\n\nRequires the `personal team manage` organization permission (admins: `organization edit`).\n\nThe operation is **all-or-none**: every listed id must be an active private space of `organizationId`, otherwise nothing is changed and the call fails with HTTP 404.\n\nLowering the limit to or below a space's current consumption pauses that space. An unconfirmed request that would pause at least one space fails with `IM004` (HTTP 406) whose metadata lists exactly those spaces; re-send with `confirmed=true` to proceed. Spaces whose limit already equals the new value are returned unchanged and emit no audit event.\n\nAvailable on app zones only.\n","security":[{"token":["private-spaces:write"]}],"parameters":[{"name":"confirmed","in":"query","schema":{"type":"boolean"},"required":false,"description":"Set to `true` to confirm a limit that pauses one or more of the listed spaces, as reported by a prior unconfirmed `IM004` response.","examples":{"set-limit":{"value":true}}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["organizationId","privateSpaceIds","operationsLimit"],"properties":{"organizationId":{"type":"integer","minimum":1,"description":"The ID of the organization that owns every listed private space."},"privateSpaceIds":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"integer","minimum":1},"description":"The IDs of the private spaces to update. Between 1 and 100 ids; duplicates are ignored."},"operationsLimit":{"type":"integer","nullable":true,"minimum":0,"maximum":2000000000,"description":"The new operations (credit) limit applied to every listed space, or `null` to remove their limits. Changing a space's limit to `0` pauses it and requires `confirmed=true`; a space already at `0` is unchanged and does not require confirmation.\n"}}},"examples":{"set-limit":{"summary":"Set a 10 000 credit limit on three spaces","value":{"organizationId":11,"privateSpaceIds":[254,255,256],"operationsLimit":10000}},"remove-limit":{"summary":"Remove the limit from two spaces","value":{"organizationId":11,"privateSpaceIds":[254,255],"operationsLimit":null}}}}}},"responses":{"200":{"description":"The limit was applied to every listed private space.","content":{"application/json":{"schema":{"type":"object","properties":{"privateSpaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the private space."},"name":{"type":"string","description":"The name of the private space."},"operationsLimit":{"type":"integer","nullable":true,"description":"The operations (credit) limit now in effect; `null` when unlimited."},"transferLimit":{"type":"integer","nullable":true,"description":"The transfer limit in bytes derived from the operations limit; `null` when unlimited."},"isPaused":{"type":"boolean","description":"Whether the private space is paused after the change."}}}}}},"examples":{"set-limit":{"value":{"privateSpaces":[{"id":254,"name":"John's space","operationsLimit":10000,"transferLimit":5368709120,"isPaused":false},{"id":255,"name":"Jane's space","operationsLimit":10000,"transferLimit":5368709120,"isPaused":true},{"id":256,"name":"Alex's space","operationsLimit":10000,"transferLimit":5368709120,"isPaused":false}]}}}}}},"400":{"description":"Invalid input, for example an empty or over-100 `privateSpaceIds`, a negative `operationsLimit`, or a missing `organizationId`.\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"The caller lacks the `personal team manage` permission on the organization (`IM002`).","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Insufficient rights.","code":"IM002"}}}},"404":{"description":"At least one listed id is not an active private space of the organization. Nothing was changed.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Private space not found.","code":"SC404"}}}},"406":{"description":"Confirmation required (`IM004`): the new limit would pause at least one changed space. The response metadata contains one fragment of type `bulkSettingLowLimit` with `textdata.count` and `data[]` (`privateSpaceId`, `name`) for the affected spaces. Re-send with `confirmed=true` to proceed. Changing a space's limit to `0` requires confirmation; a space already at `0` is an unchanged no-op.\n","content":{"application/json":{"schema":{"type":"object","required":["message","code","metadata"],"properties":{"message":{"type":"string"},"code":{"type":"string"},"metadata":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","required":["type","normalTextFormat","textdata","data"],"properties":{"type":{"type":"string","enum":["bulkSettingLowLimit"]},"normalTextFormat":{"type":"boolean","enum":[true]},"textdata":{"type":"object","required":["count"],"properties":{"count":{"type":"integer","minimum":1}}},"data":{"type":"array","minItems":1,"items":{"type":"object","required":["privateSpaceId","name"],"properties":{"privateSpaceId":{"type":"integer","minimum":1},"name":{"type":"string"}}}}}}}}},"example":{"message":"Setting a limit below current consumption pauses private spaces.","code":"IM004","metadata":[{"type":"bulkSettingLowLimit","normalTextFormat":true,"textdata":{"count":2},"data":[{"privateSpaceId":254,"name":"John's space"},{"privateSpaceId":255,"name":"Jane's space"}]}]}}}}}}},"/users/me/pinned-apps":{"get":{"x-internal":true,"tags":["User pins"],"summary":"List the current user's pinned apps for an organization","description":"Returns every app the current user has any pin under in the specified organization — pinned apps and apps that only have pinned modules. Each entry carries an `isAppPinned` flag: when `true` the app itself is pinned and shows up in the \"My apps\" tab; when `false` only modules are pinned and the entry is rendered inside the app-detail panel. App and module pins are independent — pinning a module does not pin its app, and unpinning an app leaves its module pins intact (and they reappear if the app is re-pinned). Pins are scoped per (user, organization) and are version-agnostic — the UI resolves the latest available version of each pinned app/module from the catalog. App names follow the convention used by `GET /imt/apps`: SDK apps are surfaced as `app#<name>`, native apps as the bare package name.\n","security":[{"token":["apps:read"]}],"parameters":[{"name":"organizationId","in":"query","required":true,"schema":{"type":"integer"},"example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"pinnedApps":{"type":"array","items":{"type":"object","properties":{"appName":{"type":"string","description":"Name of the pinned app. SDK apps are prefixed with `app#`; native apps are bare package names."},"isAppPinned":{"type":"boolean","description":"`true` when the app itself is pinned (it appears in the \"My apps\" tab). `false` when only modules under this app are pinned — the entry is still returned so the UI can render the pinned modules in the app-detail panel.\n"},"pinnedModules":{"type":"array","description":"Pinned modules under this app, ordered oldest-pinned-first.","items":{"type":"object","properties":{"moduleName":{"type":"string","description":"Module name within the parent app (matches the `name` field in the app's module manifest)."}}}}}}}}}}}}}},"post":{"x-internal":true,"tags":["User pins"],"summary":"Pin an app for the current user in an organization","description":"Pins an app for the authenticated user within the specified organization. Accepts both SDK apps (`appName` prefixed with `app#`) and native apps (bare package name). Pins are version-agnostic — the UI always renders the latest available version. Pinning is idempotent — pinning an already-pinned app is a no-op (no error). The app must exist in the catalog; otherwise a 404 is returned.\n","security":[{"token":["apps:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["organizationId","appName"],"properties":{"organizationId":{"type":"integer","description":"Organization to scope the pin to. The current user must be a member.","example":1},"appName":{"type":"string","description":"App name. SDK apps are prefixed with `app#`; native apps are bare package names.","maxLength":132,"example":"app#my-sdk-app"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"pinnedApp":{"type":"object","properties":{"appName":{"type":"string"}}}}}}}},"404":{"description":"App not found"}}}},"/users/me/pinned-apps/{appName}":{"delete":{"x-internal":true,"tags":["User pins"],"summary":"Unpin an app for the current user in an organization","description":"Removes the user's app pin in the specified organization. Does NOT delete the user's module pins under this app — those rows survive so re-pinning the app restores them. Idempotent — unpinning a non-pinned app is a no-op.\n","security":[{"token":["apps:write"]}],"parameters":[{"name":"appName","in":"path","required":true,"description":"App name. SDK apps are prefixed with `app#`; native apps are bare package names.","schema":{"type":"string"},"example":"app#my-sdk-app"},{"name":"organizationId","in":"query","required":true,"schema":{"type":"integer"},"example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"pinnedApp":{"type":"object","properties":{"appName":{"type":"string"}}}}}}}}}}},"/users/me/pinned-apps/{appName}/modules":{"post":{"x-internal":true,"tags":["User pins"],"summary":"Pin a module for the current user in an organization","description":"Pins a module under the specified `appName` for the current user in the specified organization. Pins are version-agnostic — the UI always renders the latest available version. The module must belong to the app; otherwise a 404 is returned. Idempotent — pinning an already-pinned module is a no-op.\n","security":[{"token":["apps:write"]}],"parameters":[{"name":"appName","in":"path","required":true,"description":"App name. SDK apps are prefixed with `app#`; native apps are bare package names.","schema":{"type":"string"},"example":"app#my-sdk-app"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["organizationId","moduleName"],"properties":{"organizationId":{"type":"integer","description":"Organization to scope the pin to. The current user must be a member.","example":1},"moduleName":{"type":"string","description":"Module name within the parent app (matches the `name` field in the app's module manifest).","maxLength":128,"example":"send-message"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"pinnedModule":{"type":"object","properties":{"appName":{"type":"string"},"moduleName":{"type":"string"}}}}}}}},"404":{"description":"Module not found for this app"}}}},"/users/me/pinned-apps/{appName}/modules/{moduleName}":{"delete":{"x-internal":true,"tags":["User pins"],"summary":"Unpin a module for the current user in an organization","description":"Removes the user's module pin in the specified organization. Does not affect the parent app pin. Idempotent — unpinning a non-pinned module is a no-op.\n","security":[{"token":["apps:write"]}],"parameters":[{"name":"appName","in":"path","required":true,"description":"App name. SDK apps are prefixed with `app#`; native apps are bare package names.","schema":{"type":"string"},"example":"app#my-sdk-app"},{"name":"moduleName","in":"path","required":true,"schema":{"type":"string"},"example":"send-message"},{"name":"organizationId","in":"query","required":true,"schema":{"type":"integer"},"example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"pinnedModule":{"type":"object","properties":{"appName":{"type":"string"},"moduleName":{"type":"string"}}}}}}}}}}},"/teams":{"get":{"tags":["Teams"],"summary":"List teams","description":"Gets the list of teams in the organization with specified `organizationId`.","security":[{"token":["teams:read"]}],"parameters":[{"name":"organizationId","in":"query","schema":{"type":"integer"},"required":true,"example":1,"description":"The ID of the organization."},{"name":"includePrivateSpaces","in":"query","schema":{"type":"boolean","default":false},"required":false,"example":true,"description":"When `true`, the caller's private space(s) — companies of type `personal` — are included\nin the list alongside standard teams. Defaults to `false`. Has no effect on instances where\nprivate spaces are not available. Request `cols[]=type` to tell private spaces apart from\nstandard teams in the response.\n"},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"organizationId":{"type":"integer"},"activeScenarios":{"type":"integer","description":"Number of active scenarios in the team. Only returned by `GET /teams/{teamId}` when requested via `cols[]`."},"activeApps":{"type":"integer","description":"Number of distinct apps that need a connection, used by the team's active scenarios. Only returned by `GET /teams/{teamId}` when requested via `cols[]`."},"operationsLimit":{"type":"integer"},"transferLimit":{"type":"bigint"},"type":{"type":"string","enum":["standard","personal"],"description":"Distinguishes a standard team from a private space (`personal`). Only returned when requested via\n`cols[]=type`. Private spaces are included in the list only when `includePrivateSpaces=true`.\n"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"example":{"default-cols":{"summary":"Gets the list of teams","description":"Gets the list of teams in the organization with specified `organizationId`","teams":[{"id":5,"name":"My Team","organizationId":5}],"pg":{"sortBy":"name","sortDir":"asc","limit":10000,"offset":0}},"all-cols":{"summary":"Gets the list of teams with all the data","description":"Gets the list of teams with all the data in the organization with specified `organizationId`","teams":[{"id":5,"name":"My Team","organizationId":5,"operationsLimit":10000,"transferLimit":"100","consumedOperations":10,"consumedTransfer":"100","isPaused":false,"consumedCenticredits":1000}],"pg":{"sortBy":"name","sortDir":"asc","limit":10000,"offset":0}},"with-private-spaces":{"summary":"Gets teams and the caller's private space","description":"With `includePrivateSpaces=true` and `cols[]=type`, the caller's private space is\nreturned alongside standard teams and can be told apart by its `type` of `personal`.\n","teams":[{"id":5,"name":"My Team","organizationId":5,"type":"standard"},{"id":42,"name":"My private space","organizationId":5,"type":"personal"}],"pg":{"sortBy":"name","sortDir":"asc","limit":10000,"offset":0}}}}}},"401":{"description":"The API token or OAuth credential lacks the `teams:read` scope (`IM001`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Make API error code, for example `IM001`."},"message":{"type":"string","description":"Human-readable error message."},"detail":{"type":"string","description":"Additional information about the error, for example the scope the request is missing."},"suberrors":{"type":"array","items":{"type":"object"}}}},"examples":{"missing-scope":{"summary":"Missing teams:read scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: teams:read","suberrors":[]}}}}}}}},"post":{"tags":["Teams"],"summary":"Create a team","description":"Create a new team in the organization with the specified `organizationId`.","security":[{"token":["teams:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the team."},"organizationId":{"type":"integer","description":"The ID of the organization."},"operationsLimit":{"type":"integer","minimum":0,"maximum":2000000000,"description":"The maximum number of operations allowed for the team. The maximum matches the highest number of credits an organization can be licensed for."}},"required":["name","organizationId"]},"example":{"name":"New Team","organizationId":1}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"team":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"organizationId":{"type":"integer"},"activeScenarios":{"type":"integer","description":"Number of active scenarios in the team. Only returned by `GET /teams/{teamId}` when requested via `cols[]`."},"activeApps":{"type":"integer","description":"Number of distinct apps that need a connection, used by the team's active scenarios. Only returned by `GET /teams/{teamId}` when requested via `cols[]`."},"operationsLimit":{"type":"integer"},"transferLimit":{"type":"bigint"},"type":{"type":"string","enum":["standard","personal"],"description":"Distinguishes a standard team from a private space (`personal`). Only returned when requested via\n`cols[]=type`. Private spaces are included in the list only when `includePrivateSpaces=true`.\n"}}},"userTeamRole":{"type":"object","properties":{"usersRoleId":{"type":"integer","nullable":true,"description":"The user's role in the team, or `null` when the user has no role (e.g. after removal)."},"userId":{"type":"integer"},"teamId":{"type":"integer"},"changeable":{"type":"boolean"},"ssoPending":{"type":"boolean"}}}}},"example":{"team":{"id":26,"name":"New Team","organizationId":1,"operationsLimit":1,"transferLimit":"536870","globalAgentsEnabled":false},"userTeamRole":{"usersRoleId":1,"userId":1,"teamId":26,"changeable":false}}}}}}}},"/teams/{teamId}":{"get":{"tags":["Teams"],"summary":"Get team details","description":"Returns information about the team with the specified `teamId`.","security":[{"token":["teams:read"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"all-cols":{"value":["id","name","organizationId","activeScenarios","activeApps","operations","transfer","centicredits","operationsLimit","transferLimit","consumedOperations","consumedTransfer","isPaused","consumedCenticredits","type"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"team":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"organizationId":{"type":"integer"},"activeScenarios":{"type":"integer","description":"Number of active scenarios in the team. Only returned by `GET /teams/{teamId}` when requested via `cols[]`."},"activeApps":{"type":"integer","description":"Number of distinct apps that need a connection, used by the team's active scenarios. Only returned by `GET /teams/{teamId}` when requested via `cols[]`."},"operationsLimit":{"type":"integer"},"transferLimit":{"type":"bigint"},"type":{"type":"string","enum":["standard","personal"],"description":"Distinguishes a standard team from a private space (`personal`). Only returned when requested via\n`cols[]=type`. Private spaces are included in the list only when `includePrivateSpaces=true`.\n"}}}}},"examples":{"default-cols":{"summary":"Get detail of a team","description":"Gets detail information about the specified team.","value":{"team":{"id":1,"name":"Team 1","organizationId":1,"globalAgentsEnabled":false}}},"all-cols":{"summary":"Get all team data","description":"Gets all available information about the team.","value":{"team":{"id":1,"name":"Team 1","organizationId":1,"activeScenarios":1,"activeApps":0,"operations":"2015","transfer":"27914902","centicredits":"201500","operationsLimit":10000,"transferLimit":"100","consumedOperations":10,"consumedTransfer":"100","isPaused":false,"consumedCenticredits":1000,"type":"standard"}}}}}}},"401":{"description":"The API token or OAuth credential lacks the `teams:read` scope (`IM001`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Make API error code, for example `IM001`."},"message":{"type":"string","description":"Human-readable error message."},"detail":{"type":"string","description":"Additional information about the error, for example the scope the request is missing."},"suberrors":{"type":"array","items":{"type":"object"}}}},"examples":{"missing-scope":{"summary":"Missing teams:read scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: teams:read","suberrors":[]}}}}}}}},"patch":{"tags":["Teams"],"summary":"Update a team","description":"Updates information about the team with the specified `teamId`.","security":[{"token":["teams:write"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"all-cols":{"value":["id","name","organizationId","activeScenarios","activeApps","operations","transfer","centicredits","operationsLimit","transferLimit","consumedOperations","consumedTransfer","isPaused","consumedCenticredits","type"]}}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","minLength":1,"maxLength":128,"description":"The new name of the team."},"operationsLimit":{"type":"integer","nullable":true,"minimum":0,"maximum":2000000000,"description":"The maximum number of operations allowed for the team. The maximum matches the highest number of credits an organization can be licensed for. `null` removes the limit."},"scenarioDrafts":{"type":"boolean","deprecated":true,"description":"This property is deprecated. It is only supported on private instances and ignored on Make's public cloud.\n"}}},"example":{"name":"Sales people team","operationsLimit":10000}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"team":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"organizationId":{"type":"integer"},"activeScenarios":{"type":"integer","description":"Number of active scenarios in the team. Only returned by `GET /teams/{teamId}` when requested via `cols[]`."},"activeApps":{"type":"integer","description":"Number of distinct apps that need a connection, used by the team's active scenarios. Only returned by `GET /teams/{teamId}` when requested via `cols[]`."},"operationsLimit":{"type":"integer"},"transferLimit":{"type":"bigint"},"type":{"type":"string","enum":["standard","personal"],"description":"Distinguishes a standard team from a private space (`personal`). Only returned when requested via\n`cols[]=type`. Private spaces are included in the list only when `includePrivateSpaces=true`.\n"}}}}},"examples":{"default-cols":{"summary":"Update a team","description":"Updates the specified team.","value":{"team":{"id":22,"name":"Sales people team","organizationId":1,"globalAgentsEnabled":false}}},"all-cols":{"summary":"Update a team and return all data","description":"Updates the specified team and returns all available team data.","value":{"team":{"id":22,"name":"Sales people team","organizationId":1,"activeScenarios":1,"activeApps":0,"operations":"2015","transfer":"27914902","centicredits":"201500","operationsLimit":10000,"transferLimit":"100","consumedOperations":10,"consumedTransfer":"100","isPaused":false,"consumedCenticredits":1000,"type":"standard"}}}}}}}}},"delete":{"tags":["Teams"],"summary":"Delete a team","description":"Deletes the team with the specified `teamId`. Make also deletes all data associated with the team, for example scenarios, webhooks or custom team variables.","security":[{"token":["teams:write"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"example":true,"description":"Set this parameter to `true` to confirm the team deletion. Otherwise, the API call returns an error and the team is not deleted."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"team":{"type":"integer"}}},"example":{"team":22}}}}}}},"/teams/{teamId}/user-team-roles":{"get":{"tags":["Teams / User team roles"],"summary":"List user roles in the team","description":"Gets list of all users and their roles in the team with the specified `teamId`. Get all user role IDs with the API call `GET /users/roles`.","security":[{"token":["teams:read"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userTeamRoles":{"type":"array","items":{"type":"object","properties":{"usersRoleId":{"type":"integer","nullable":true,"description":"The user's role in the team, or `null` when the user has no role (e.g. after removal)."},"userId":{"type":"integer"},"teamId":{"type":"integer"},"changeable":{"type":"boolean"},"ssoPending":{"type":"boolean"}}}}}},"example":{"userTeamRoles":[{"usersRoleId":1,"userId":1,"teamId":1,"changeable":false},{"usersRoleId":3,"userId":13,"teamId":1,"changeable":true}]}}}},"401":{"description":"The API token or OAuth credential lacks the `teams:read` scope (`IM001`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Make API error code, for example `IM001`."},"message":{"type":"string","description":"Human-readable error message."},"detail":{"type":"string","description":"Additional information about the error, for example the scope the request is missing."},"suberrors":{"type":"array","items":{"type":"object"}}}},"examples":{"missing-scope":{"summary":"Missing teams:read scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: teams:read","suberrors":[]}}}}}}}}},"/teams/{teamId}/user-team-roles/{userId}":{"get":{"tags":["Teams / User team roles"],"summary":"Get user team role details","description":"Retrieves information about user role in a team with the specified `userId` and `teamId`. Get all user role IDs with the API call `GET users/roles`.","security":[{"token":["teams:read"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"string"},"required":true,"description":"The ID of the team.","example":22},{"name":"userId","in":"path","schema":{"type":"string"},"required":true,"description":"The ID of the user.","example":111},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n"},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userTeamRole":{"type":"object","properties":{"usersRoleId":{"type":"integer","nullable":true,"description":"The user's role in the team, or `null` when the user has no role (e.g. after removal)."},"userId":{"type":"integer"},"teamId":{"type":"integer"},"changeable":{"type":"boolean"},"ssoPending":{"type":"boolean"}}}}},"example":{"userTeamRole":{"usersRoleId":3,"userId":12,"teamId":1,"changeable":true}}}}},"401":{"description":"The API token or OAuth credential lacks the `teams:read` scope (`IM001`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Make API error code, for example `IM001`."},"message":{"type":"string","description":"Human-readable error message."},"detail":{"type":"string","description":"Additional information about the error, for example the scope the request is missing."},"suberrors":{"type":"array","items":{"type":"object"}}}},"examples":{"missing-scope":{"summary":"Missing teams:read scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: teams:read","suberrors":[]}}}}}}}}},"/teams/{teamId}/variables":{"get":{"tags":["Teams"],"summary":"List team variables","description":"Retrieves the collection of team variables. The response contains all team variables if your account has the custom variables feature available. Otherwise, the response contains only Make system variables.\n\nCheck availability of the custom variables feature with the API call `GET /organizations/{organizationId}` for the organization to which the team belongs. If the response contains `\"customVariables\": true` pair in the `license` object then you have access to the custom variables feature.\n\nRefer to the [Make pricing page](https://www.make.com/en/help/general/pricing-parameters) for Make pricing plans overview.","security":[{"token":["team-variables:read"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"teamVariables":{"type":"object","properties":{"typeId":{"type":"integer"},"name":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"boolean"},{"type":"number"},{"type":"object","additionalProperties":{}},{"type":"array","items":{}}]},"isSystem":{"type":"boolean"}}}}},"example":{"teamVariables":{"name":"userId","typeId":1,"value":123,"isSystem":false}}}}}}},"post":{"tags":["Teams"],"summary":"Create team variable","description":"Creates new team variable. You can check the availability of the custom variables feature with the API call `GET /organizations/{organizationId}` for the organization to which the team belongs. If the API call response contains `\"customVariables\": true` pair in the `license` object then you have access to the custom variables feature.\n\nA successful response contains all information about the new variable. If you don't have the custom variables feature available then the API call returns the error 404.\n\nRefer to the [Make pricing page](https://www.make.com/en/help/general/pricing-parameters) for Make pricing plans overview.","security":[{"token":["team-variables:write"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"typeId":{"type":"number","description":"Number representing the type of the custom variable. The mapping of `typeId` and variable types is as follows:\n\n- 1: `number`,\n - 2: `string`,\n - 3: `boolean`,\n - 4: `date`in ISO 8601 compliant format `YYYY-MM-DDTHH:mm:ss.sssZ`. For example: `1998-03-06T12:31:00.000Z`."},"value":{"oneOf":[{"type":"string"},{"type":"boolean"},{"type":"number"},{"type":"object","additionalProperties":{}},{"type":"array","items":{}}],"description":"Value assigned to the custom variable."},"name":{"type":"string","description":"The name of the variable. You can use letters, digits, `$` and `_` characters in the custom variable name."}}},"example":{"typeId":1,"value":123,"name":"userId"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"teamVariable":{"type":"object","properties":{"typeId":{"type":"integer"},"name":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"boolean"},{"type":"number"},{"type":"object","additionalProperties":{}},{"type":"array","items":{}}]},"isSystem":{"type":"boolean"}}}}},"example":{"teamVariable":{"name":"userId","typeId":1,"value":123,"isSystem":false}}}}}}}},"/teams/{teamId}/variables/{variableName}":{"patch":{"tags":["Teams"],"summary":"Update team variable","description":"Updates custom team variable with the specified variable `name`. Only parameters specified in the request body are updated.\n\nYou can check the availability of the custom variables feature with the API call `GET /organizations/{organizationId}` for the organization to which the team belongs. If the response contains `\"customVariables\": true` pair in the `license` object then you have access to the custom variables feature.\n\nA successful response contains all information about the updated variable. If you don't have the custom variables feature available then the API call returns the error 404.\n\nRefer to the [Make pricing page](https://www.make.com/en/help/general/pricing-parameters) for the Make pricing plans overview.\n\nUpdate the variable `typeId` accordingly when you are updating the variable `value`. Make checks whether the variable type and value match in the request body. There is no check for incorrect variable type when you update only variable value and _vice versa_.","security":[{"token":["team-variables:write"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22},{"name":"variableName","in":"path","schema":{"type":"string"},"required":true,"description":"The name of the custom variable.","example":"userID"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"typeId":{"type":"number","description":"Number representing the type of the custom variable. The mapping of `typeId` and variable types is as follows:\n\n- 1: `number`,\n - 2: `string`,\n - 3: `boolean`,\n - 4: `date`in ISO 8601 compliant format `YYYY-MM-DDTHH:mm:ss.sssZ`. For example: `1998-03-06T12:31:00.000Z`."},"value":{"oneOf":[{"type":"string"},{"type":"boolean"},{"type":"number"},{"type":"object","additionalProperties":{}},{"type":"array","items":{}}],"description":"Value assigned to the custom variable."}}},"example":{"value":221}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"teamVariable":{"type":"object","properties":{"typeId":{"type":"integer"},"name":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"boolean"},{"type":"number"},{"type":"object","additionalProperties":{}},{"type":"array","items":{}}]},"isSystem":{"type":"boolean"}}}}},"example":{"teamVariable":{"name":"userId","typeId":1,"value":251}}}}}}},"delete":{"tags":["Teams"],"summary":"Delete team variable","description":"Deletes team variable.\n\nIf you don't have the custom variables feature available then the API call returns error 404. Check the availability of the custom variables feature with the API call `GET /organizations/{organizationId}` for the organization in which the team belongs. If the response contains `\"customVariables\": true` pair in the `license` object then you have access to the custom variables feature.\n\nRefer to the [Make pricing page](https://www.make.com/en/help/general/pricing-parameters) for Make pricing plans overview.","security":[{"token":["team-variables:write"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22},{"name":"variableName","in":"path","schema":{"type":"string"},"required":true,"description":"The name of the custom variable.","example":"userID"},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"description":"Set to `true` to confirm deleting the custom variable. Otherwise the API call fails with the error IM004 (406).","example":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/teams/{teamId}/variables/{variableName}/history":{"get":{"tags":["Teams"],"summary":"History of custom variable updates","description":"Gets the history of updates of the specified custom variable. The response contains the ID value of the variable history entry and a `diffObject`. The `diffObject` contains:\n\n- the original value,\n - the new value,\n - the timestamp of the update,\n - the author of the update.\n\nIf the variable doesn't have any updates, the `diffObject` contains the current value of the variable instead of the original and new values.\n\nThe update history entries are sorted from newest to latest.","security":[{"token":["team-variables:read"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22},{"name":"variableName","in":"path","schema":{"type":"string"},"required":true,"description":"The name of the custom variable.","example":"userID"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"teamVariableHistory":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"integer"},"diffObject":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"typeId":{"type":"integer"}}},"changed":{"type":"string","format":"date"},"action":{"type":"string","description":"organization_variable_created or organization_variable_edited or team_variable_created or team_variable_edited"},"author":{"type":"string"}}},{"type":"object","properties":{"id":{"type":"integer"},"diffObject":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"typeId":{"type":"integer"}}},"changed":{"type":"string","format":"date"},"action":{"type":"string"},"author":{"type":"string"}}}]}}}},"example":{"teamVariableHistory":[{"id":1,"diffObject":{"name":"userId","value":11,"typeId":1},"changed":"2022-08-02T09:37:05.364Z","action":"team_variable_created","author":"Jon Doe"},{"id":2,"diffObject":{"old":{"value":11,"typeId":1},"new":{"value":23,"typeId":1}},"changed":"2022-08-02T09:37:05.364Z","action":"team_variable_edited","author":"Jon Doe"}]}}}}}}},"/teams/{teamId}/check-email-is-member":{"post":{"tags":["Teams"],"summary":"Check if email is part of team","x-internal":true,"description":"Checks if every given e-mail is an active member of the team. Evaluates to false if any of the input e-mails are not part of the team. This endpoint uses JWT authorization.\nPlease note that JWT authorization is not available in our open API, use tools like Postman for testing.\n","parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22},{"name":"Authorization","in":"header","schema":{"type":"string"},"required":true,"description":"JWT token used for internal Authorization.","example":"Internal eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhYWEiOjF9.PWCmjzr_lg9npxv5eUph5B937LXVspIKlRdByWRWKxs"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string"}}},"required":["recipients"]},"example":{"recipients":["test1@email.com","test2@email.com"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"isMember":{"type":"boolean"}}},"example":{"isMember":true}}}}}}},"/teams/{teamId}/usage":{"get":{"tags":["Teams"],"summary":"Get team usage","description":"Retrieves a list of daily centicredits, operations, and data transfer usage for all scenarios within a specified team over the past 30 days.\n\nBy default, the endpoint uses the timezone of the user making the API call to define the start and end of each day in the 30-day timeframe.\n\nTo use the organization's timezone instead, set the `organizationTimezone` parameter to `true`. This ensures that the daily aggregates align with the organization's operational hours. This is especially useful for scenarios where aggregated data needs to align with the organization's operational hours.\n\nFor instance, a remote data analyst in India working for a Czech company can set `organizationTimezone=true` to ensure the usage data reflects the company's timezone, providing more relevant and accurate insights for organizational reporting and analysis.\n\nFor more information on timezones in Make, please refer to our [Help Center article](https://www.make.com/en/help/general/manage-time-zones).\n","security":[{"token":["teams:read"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22},{"name":"organizationTimezone","in":"query","schema":{"type":"boolean"},"required":false,"description":"When set to `true`, the endpoint will calculate and return usage data based on the organization's timezone instead of the user's local timezone.","example":true}],"responses":{"200":{"description":"Successfully retrieved usage data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"operations":{"type":"integer"},"dataTransfer":{"type":"integer"},"centicredits":{"type":"bigint"}}}}}},"example":{"data":[{"date":"2024-05-30","operations":9,"dataTransfer":135,"centicredits":900},{"date":"2024-05-31","operations":15,"dataTransfer":157,"centicredits":1500}]}}}},"401":{"description":"The API token or OAuth credential lacks the `teams:read` scope (`IM001`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Make API error code, for example `IM001`."},"message":{"type":"string","description":"Human-readable error message."},"detail":{"type":"string","description":"Additional information about the error, for example the scope the request is missing."},"suberrors":{"type":"array","items":{"type":"object"}}}},"examples":{"missing-scope":{"summary":"Missing teams:read scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: teams:read","suberrors":[]}}}}}}}}},"/teams/{teamId}/feature-controls":{"get":{"tags":["Teams"],"summary":"Get feature controls of an organization which the team belongs to","description":"Retrieves all feature controls for the specified organization which the team belongs to.\n","parameters":[{"name":"teamId","in":"path","description":"The ID of the team.","schema":{"type":"integer"},"required":true,"example":11},{"name":"featureControlName","in":"query","description":"The feature control name.","schema":{"type":"string"},"required":false,"example":"Make AI Tools"},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","required":false}],"responses":{"200":{"description":"Successfully retrieved feature controls","content":{"application/json":{"schema":{"type":"object","properties":{"enableAllControlFeatures":{"type":"boolean"},"featureControls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"label":{"type":"object"},"description":{"type":"object"},"tags":{"type":"array","items":{"type":"string"}},"warning_message":{"type":"object"},"enabled":{"type":"boolean"}}}}}},"example":{"enableAllControlFeatures":false,"featureControls":[{"id":2,"name":"Make AI Tools","label":{"en":"Make AI Tools"},"description":{"en":"Access to Make AI Tools"},"tags":["Beta"],"warning_message":{"en":"This feature is in beta."},"enabled":true},{"id":1,"name":"Advanced Security","label":{"en":"Advanced AI Security"},"description":{"en":"Enhanced security features for your organization"},"tags":["AI"],"warning_message":{"en":"This feature uses AI."},"enabled":false}]}}}}}}},"/teams/{teamId}/connections/{connectionId}/access-list":{"get":{"tags":["Connections / Access list"],"summary":"List a connection's access list","description":"Returns the access list (entity ACL) of a connection — the principals granted a role on it.\n\nA caller holding the `entity use` permission on the connection sees every member; any other member of the connection's team sees only the Entity Admins. The connection must belong to the team in the path.\n\nRequires the locked connections feature to be enabled for the organization the team belongs to; otherwise the endpoint returns `400` (`IM903`).","security":[{"token":["connections:read"]}],"parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the team that owns the connection.","example":1},{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128}],"responses":{"200":{"description":"The access-list members visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"accessList":{"type":"array","description":"The access-list members visible to the caller.","items":{"type":"object","description":"A single access-list member — a principal with its entity-tier role and, for users, display fields.","required":["membershipType","membershipId","role"],"properties":{"membershipType":{"type":"string","enum":["user","group"],"description":"The kind of principal. Always `user` in the current version.","example":"user"},"membershipId":{"type":"integer","description":"The principal's id. For a `user` principal this is the user id.","example":128},"role":{"type":"string","enum":["entity:entity-admin","entity:entity-member"],"description":"The principal's entity-tier role on the connection or key.","example":"entity:entity-admin"},"name":{"type":"string","nullable":true,"description":"Display name of the user. Null for non-user principals or an unknown user.","example":"Jane Doe"},"email":{"type":"string","nullable":true,"description":"Email of the user. Null for non-user principals.","example":"jane.doe@example.com"}}},"example":[{"membershipType":"user","membershipId":128,"role":"entity:entity-admin","name":"Jane Doe","email":"jane.doe@example.com"},{"membershipType":"user","membershipId":214,"role":"entity:entity-member","name":"John Smith","email":"john.smith@example.com"}]}}}}}},"400":{"description":"The locked connections feature is not enabled for the organization (`IM903`)."},"403":{"description":"The caller is not allowed to view this access list (`IM002`)."},"404":{"description":"The connection does not exist in the given team (`IM304`)."}}}},"/teams/{teamId}/keys/{keyId}/access-list":{"get":{"tags":["Keys / Access list"],"summary":"List a key's access list","description":"Returns the access list (entity ACL) of a key — the principals granted a role on it.\n\nA caller holding the `entity use` permission on the key sees every member; any other member of the key's team sees only the Entity Admins. The key must belong to the team in the path.\n\nRequires the locked connections feature to be enabled for the organization the team belongs to; otherwise the endpoint returns `400` (`IM903`).","security":[{"token":["keys:read"]}],"parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the team that owns the key.","example":1},{"name":"keyId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the key.","example":16}],"responses":{"200":{"description":"The access-list members visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"accessList":{"type":"array","description":"The access-list members visible to the caller.","items":{"type":"object","description":"A single access-list member — a principal with its entity-tier role and, for users, display fields.","required":["membershipType","membershipId","role"],"properties":{"membershipType":{"type":"string","enum":["user","group"],"description":"The kind of principal. Always `user` in the current version.","example":"user"},"membershipId":{"type":"integer","description":"The principal's id. For a `user` principal this is the user id.","example":128},"role":{"type":"string","enum":["entity:entity-admin","entity:entity-member"],"description":"The principal's entity-tier role on the connection or key.","example":"entity:entity-admin"},"name":{"type":"string","nullable":true,"description":"Display name of the user. Null for non-user principals or an unknown user.","example":"Jane Doe"},"email":{"type":"string","nullable":true,"description":"Email of the user. Null for non-user principals.","example":"jane.doe@example.com"}}},"example":[{"membershipType":"user","membershipId":128,"role":"entity:entity-admin","name":"Jane Doe","email":"jane.doe@example.com"},{"membershipType":"user","membershipId":214,"role":"entity:entity-member","name":"John Smith","email":"john.smith@example.com"}]}}}}}},"400":{"description":"The locked connections feature is not enabled for the organization (`IM903`)."},"403":{"description":"The caller is not allowed to view this access list (`IM002`)."},"404":{"description":"The key does not exist in the given team (`IM309`)."}}}},"/teams/{teamId}/connections/{connectionId}/access-list/users":{"post":{"tags":["Connections / Access list"],"summary":"Add a member to a connection's access list","description":"Adds a user to a connection's access list (entity ACL) with a role.\n\nRequires `entity manage` on the connection, and the target user must already be a member of the connection's team. Returns `409` when the user is already on the access list and `400` when they are not a team member or the feature is disabled.","security":[{"token":["connections:write"]}],"parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the team that owns the connection.","example":1},{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["userId","role"],"properties":{"userId":{"type":"integer","minimum":1,"description":"The id of the user to add. Must already be a member of the entity's team.","example":214},"role":{"type":"string","enum":["entity:entity-admin","entity:entity-member"],"description":"The entity-tier role to grant the user on the connection or key.","example":"entity:entity-member"}}},"example":{"userId":214,"role":"entity:entity-member"}}}},"responses":{"200":{"description":"The created access-list member.","content":{"application/json":{"schema":{"type":"object","properties":{"member":{"type":"object","description":"A single access-list member — a principal with its entity-tier role and, for users, display fields.","required":["membershipType","membershipId","role"],"properties":{"membershipType":{"type":"string","enum":["user","group"],"description":"The kind of principal. Always `user` in the current version.","example":"user"},"membershipId":{"type":"integer","description":"The principal's id. For a `user` principal this is the user id.","example":128},"role":{"type":"string","enum":["entity:entity-admin","entity:entity-member"],"description":"The principal's entity-tier role on the connection or key.","example":"entity:entity-admin"},"name":{"type":"string","nullable":true,"description":"Display name of the user. Null for non-user principals or an unknown user.","example":"Jane Doe"},"email":{"type":"string","nullable":true,"description":"Email of the user. Null for non-user principals.","example":"jane.doe@example.com"}}}}},"example":{"member":{"membershipType":"user","membershipId":214,"role":"entity:entity-member","name":"John Smith","email":"john.smith@example.com"}}}}},"400":{"description":"The locked connections and keys feature is disabled (`IM903`), or the user is not a team member / the role is invalid (`IM005`)."},"403":{"description":"The caller lacks `entity manage` on the connection (`IM002`)."},"404":{"description":"The connection does not exist in the given team (`IM304`)."},"409":{"description":"The user is already on the connection's access list (`SC409`)."}}}},"/teams/{teamId}/keys/{keyId}/access-list/users":{"post":{"tags":["Keys / Access list"],"summary":"Add a member to a key's access list","description":"Adds a user to a key's access list (entity ACL) with a role.\n\nRequires `entity manage` on the key, and the target user must already be a member of the key's team. Returns `409` when the user is already on the access list and `400` when they are not a team member or the feature is disabled.","security":[{"token":["keys:write"]}],"parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the team that owns the key.","example":1},{"name":"keyId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the key.","example":16}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["userId","role"],"properties":{"userId":{"type":"integer","minimum":1,"description":"The id of the user to add. Must already be a member of the entity's team.","example":214},"role":{"type":"string","enum":["entity:entity-admin","entity:entity-member"],"description":"The entity-tier role to grant the user on the connection or key.","example":"entity:entity-member"}}},"example":{"userId":214,"role":"entity:entity-member"}}}},"responses":{"200":{"description":"The created access-list member.","content":{"application/json":{"schema":{"type":"object","properties":{"member":{"type":"object","description":"A single access-list member — a principal with its entity-tier role and, for users, display fields.","required":["membershipType","membershipId","role"],"properties":{"membershipType":{"type":"string","enum":["user","group"],"description":"The kind of principal. Always `user` in the current version.","example":"user"},"membershipId":{"type":"integer","description":"The principal's id. For a `user` principal this is the user id.","example":128},"role":{"type":"string","enum":["entity:entity-admin","entity:entity-member"],"description":"The principal's entity-tier role on the connection or key.","example":"entity:entity-admin"},"name":{"type":"string","nullable":true,"description":"Display name of the user. Null for non-user principals or an unknown user.","example":"Jane Doe"},"email":{"type":"string","nullable":true,"description":"Email of the user. Null for non-user principals.","example":"jane.doe@example.com"}}}}},"example":{"member":{"membershipType":"user","membershipId":214,"role":"entity:entity-member","name":"John Smith","email":"john.smith@example.com"}}}}},"400":{"description":"The locked connections and keys feature is disabled (`IM903`), or the user is not a team member / the role is invalid (`IM005`)."},"403":{"description":"The caller lacks `entity manage` on the key (`IM002`)."},"404":{"description":"The key does not exist in the given team (`IM309`)."},"409":{"description":"The user is already on the key's access list (`SC409`)."}}}},"/teams/{teamId}/connections/{connectionId}/access-list/users/{userId}":{"patch":{"tags":["Connections / Access list"],"summary":"Change a connection access-list member's role","description":"Changes the entity-tier role of a user already on a connection's access list.\n\nRequires `entity manage`. Returns `404` if the user is not on the access list, and `409` if the change would demote the connection's last Entity Admin.","security":[{"token":["connections:write"]}],"parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the team that owns the connection.","example":1},{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128},{"name":"userId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the user whose role to change.","example":214}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["role"],"properties":{"role":{"type":"string","enum":["entity:entity-admin","entity:entity-member"],"description":"The entity-tier role to set for the user on the connection or key.","example":"entity:entity-admin"}}},"example":{"role":"entity:entity-admin"}}}},"responses":{"200":{"description":"The updated access-list member.","content":{"application/json":{"schema":{"type":"object","properties":{"member":{"type":"object","description":"A single access-list member — a principal with its entity-tier role and, for users, display fields.","required":["membershipType","membershipId","role"],"properties":{"membershipType":{"type":"string","enum":["user","group"],"description":"The kind of principal. Always `user` in the current version.","example":"user"},"membershipId":{"type":"integer","description":"The principal's id. For a `user` principal this is the user id.","example":128},"role":{"type":"string","enum":["entity:entity-admin","entity:entity-member"],"description":"The principal's entity-tier role on the connection or key.","example":"entity:entity-admin"},"name":{"type":"string","nullable":true,"description":"Display name of the user. Null for non-user principals or an unknown user.","example":"Jane Doe"},"email":{"type":"string","nullable":true,"description":"Email of the user. Null for non-user principals.","example":"jane.doe@example.com"}}}}},"example":{"member":{"membershipType":"user","membershipId":214,"role":"entity:entity-admin","name":"John Smith","email":"john.smith@example.com"}}}}},"400":{"description":"The locked connections and keys feature is disabled (`IM903`), or the role is invalid (`IM005`)."},"403":{"description":"The caller lacks `entity manage` on the connection (`IM002`)."},"404":{"description":"The connection is not in the team, or the user is not on its access list (`IM304` / `SC404`)."},"409":{"description":"The change would leave the connection without an Entity Admin (`SC409`)."}}},"delete":{"tags":["Connections / Access list"],"summary":"Remove a member from a connection's access list","description":"Removes a user from a connection's access list.\n\nRequires `entity manage`. Returns `404` if the user is not on the access list, and `409` if removing them would leave the connection without an Entity Admin.","security":[{"token":["connections:write"]}],"parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the team that owns the connection.","example":1},{"name":"connectionId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the connection. You can get connection ID's of all your connections with the the [List connections](./get--connections.md) endpoint.","example":128},{"name":"userId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the user to remove.","example":214}],"responses":{"204":{"description":"The user was removed from the access list."},"400":{"description":"The locked connections and keys feature is disabled (`IM903`)."},"403":{"description":"The caller lacks `entity manage` on the connection (`IM002`)."},"404":{"description":"The connection is not in the team, or the user is not on its access list (`IM304` / `SC404`)."},"409":{"description":"Removing the user would leave the connection without an Entity Admin (`SC409`)."}}}},"/teams/{teamId}/keys/{keyId}/access-list/users/{userId}":{"patch":{"tags":["Keys / Access list"],"summary":"Change a key access-list member's role","description":"Changes the entity-tier role of a user already on a key's access list.\n\nRequires `entity manage`. Returns `404` if the user is not on the access list, and `409` if the change would demote the key's last Entity Admin.","security":[{"token":["keys:write"]}],"parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the team that owns the key.","example":1},{"name":"keyId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the key.","example":16},{"name":"userId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the user whose role to change.","example":214}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["role"],"properties":{"role":{"type":"string","enum":["entity:entity-admin","entity:entity-member"],"description":"The entity-tier role to set for the user on the connection or key.","example":"entity:entity-admin"}}},"example":{"role":"entity:entity-admin"}}}},"responses":{"200":{"description":"The updated access-list member.","content":{"application/json":{"schema":{"type":"object","properties":{"member":{"type":"object","description":"A single access-list member — a principal with its entity-tier role and, for users, display fields.","required":["membershipType","membershipId","role"],"properties":{"membershipType":{"type":"string","enum":["user","group"],"description":"The kind of principal. Always `user` in the current version.","example":"user"},"membershipId":{"type":"integer","description":"The principal's id. For a `user` principal this is the user id.","example":128},"role":{"type":"string","enum":["entity:entity-admin","entity:entity-member"],"description":"The principal's entity-tier role on the connection or key.","example":"entity:entity-admin"},"name":{"type":"string","nullable":true,"description":"Display name of the user. Null for non-user principals or an unknown user.","example":"Jane Doe"},"email":{"type":"string","nullable":true,"description":"Email of the user. Null for non-user principals.","example":"jane.doe@example.com"}}}}},"example":{"member":{"membershipType":"user","membershipId":214,"role":"entity:entity-admin","name":"John Smith","email":"john.smith@example.com"}}}}},"400":{"description":"The locked connections and keys feature is disabled (`IM903`), or the role is invalid (`IM005`)."},"403":{"description":"The caller lacks `entity manage` on the key (`IM002`)."},"404":{"description":"The key is not in the team, or the user is not on its access list (`IM309` / `SC404`)."},"409":{"description":"The change would leave the key without an Entity Admin (`SC409`)."}}},"delete":{"tags":["Keys / Access list"],"summary":"Remove a member from a key's access list","description":"Removes a user from a key's access list.\n\nRequires `entity manage`. Returns `404` if the user is not on the access list, and `409` if removing them would leave the key without an Entity Admin.","security":[{"token":["keys:write"]}],"parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the team that owns the key.","example":1},{"name":"keyId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the key.","example":16},{"name":"userId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the user to remove.","example":214}],"responses":{"204":{"description":"The user was removed from the access list."},"400":{"description":"The locked connections and keys feature is disabled (`IM903`)."},"403":{"description":"The caller lacks `entity manage` on the key (`IM002`)."},"404":{"description":"The key is not in the team, or the user is not on its access list (`IM309` / `SC404`)."},"409":{"description":"Removing the user would leave the key without an Entity Admin (`SC409`)."}}}},"/teams/{teamId}/locked-entities":{"get":{"x-internal":true,"tags":["Teams / Locked entities"],"summary":"List the team's locked entities","description":"Returns every locked connection and key of the team, each with the permissions the calling user holds on it and the part of its access list the caller may see.\n\nThe `permissions` array reflects the caller's own grants: an entity without `entity use` cannot be referenced in scenarios by the caller. For each entity, a caller holding `entity use` sees the full access list; any other member of the team sees only the `entity manage` holders. The caller must hold the team's connections and keys view permissions.\n\nRequires the locked connections feature to be enabled for the organization the team belongs to; otherwise the endpoint returns `400` (`IM903`).","security":[{"token":["connections:read","keys:read"]}],"parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The ID of the team whose locked entities to list.","example":1}],"responses":{"200":{"description":"The team's locked entities. Empty when the team has none.","content":{"application/json":{"schema":{"type":"object","properties":{"lockedEntities":{"type":"array","description":"Every locked connection and key of the team.","items":{"type":"object","description":"A locked connection or key of the team, annotated with the calling user's own permissions and the part of its access list the caller may see.","required":["type","id","name","permissions","acl"],"properties":{"type":{"type":"string","enum":["connection","key"],"description":"The kind of entity the `id` refers to.","example":"connection"},"id":{"type":"integer","description":"The id of the locked connection or key.","example":4711},"name":{"type":"string","description":"The user-facing display name of the locked connection or key.","example":"My CRM connection"},"permissions":{"type":"array","description":"Entity-tier permissions. `entity use` allows referencing the entity in scenarios and viewing its configuration; `entity manage` additionally allows editing it and managing its access list.","items":{"type":"string","enum":["entity use","entity manage"]},"example":["entity use"]},"acl":{"type":"array","description":"The access-list members visible to the caller — everyone when the caller holds `entity use` on the entity, otherwise only the `entity manage` holders.","items":{"type":"object","description":"A principal on the locked entity's access list, with display fields and the permissions their entity role grants.","required":["id","membershipType","name","permissions"],"properties":{"id":{"type":"integer","description":"The principal's id. For a `user` principal this is the user id.","example":128},"membershipType":{"type":"string","enum":["user","group"],"description":"The kind of principal. Always `user` in the current version.","example":"user"},"name":{"type":"string","description":"Display name of the principal. Falls back to the email address, and to `Unknown user` when neither is known.","example":"Jane Doe"},"email":{"type":"string","description":"Email of the user. Omitted when unknown or for non-user principals.","example":"jane.doe@example.com"},"permissions":{"type":"array","description":"Entity-tier permissions. `entity use` allows referencing the entity in scenarios and viewing its configuration; `entity manage` additionally allows editing it and managing its access list.","items":{"type":"string","enum":["entity use","entity manage"]},"example":["entity use"]}}}}}},"example":[{"type":"connection","id":4711,"name":"My CRM connection","permissions":["entity use"],"acl":[{"id":128,"membershipType":"user","name":"Jane Doe","email":"jane.doe@example.com","permissions":["entity use","entity manage"]},{"id":214,"membershipType":"user","name":"John Smith","email":"john.smith@example.com","permissions":["entity use"]}]},{"type":"key","id":88,"name":"My webhook key","permissions":[],"acl":[{"id":128,"membershipType":"user","name":"Jane Doe","email":"jane.doe@example.com","permissions":["entity use","entity manage"]}]}]}}}}}},"400":{"description":"The locked connections feature is not enabled for the organization (`IM903`)."},"403":{"description":"The caller lacks the connections and/or keys view permission on the team (`IM002`). Also returned for a nonexistent `teamId` — authorization runs before the team is resolved, so a caller with no relationship to the team can't distinguish \"doesn't exist\" from \"exists, no access\"."}}}},"/templates":{"get":{"tags":["Templates"],"summary":"List templates","description":"Retrieves a collection of all templates for a team with a given ID. Returned templates are sorted by ID in ascending order.","security":[{"token":["templates:read"]}],"parameters":[{"name":"teamId","in":"query","schema":{"type":"integer"},"description":"The unique ID of the team whose templates will be retrieved.","example":1},{"name":"public","in":"query","schema":{"type":"boolean"},"description":"Indicates if the template is public which means that it was published and approved, and can be accessed by anyone.","example":true},{"name":"usedApps[]","in":"query","schema":{"type":"array","items":{"type":"string"}},"example":["http"],"description":"The array with the text IDs of the apps used in the templates. This parameter allows you to get only the templates containing specific apps."},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","description","usedApps","public","published","approved","approvedId","requestedApproval","publishedId","publicUrl","approvedName","publishedName"]}},"description":"Specifies the group of values to return. For example, you may want to retrieve only the names and IDs of the templates."},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"teamName":{"type":"string"},"organizationId":{"type":"string"},"description":{"type":"string"},"usedApps":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"published":{"type":"string","format":"date-time"},"approved":{"type":"string","format":"date-time"},"approvedId":{"type":"integer"},"requestedApproval":{"type":"boolean"},"publishedId":{"type":"integer"},"publicUrl":{"type":"string"},"approvedName":{"type":"string"},"publishedName":{"type":"string"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"example":{"templates":[{"id":61,"name":"Private","teamId":1,"description":"Template description","usedApps":["http"],"public":false,"published":null,"approved":null,"approvedId":null,"requestedApproval":false,"publishedId":null,"publicUrl":null,"approvedName":null,"publishedName":null},{"id":65,"name":"Published","teamId":1,"description":null,"usedApps":["http"],"public":true,"published":"2020-12-01T14:14:53.807Z","approved":null,"approvedId":null,"requestedApproval":false,"publishedId":39,"publicUrl":"39-published","approvedName":null,"publishedName":"Published"},{"id":56,"name":"Published, approved","teamId":1,"description":null,"usedApps":["http"],"public":true,"published":"2020-11-10T14:08:29.084Z","approved":"2020-12-03T09:44:55.685Z","approvedId":35,"requestedApproval":false,"publishedId":null,"publicUrl":"32-published-approved","approvedName":"Published, approved","publishedName":null},{"id":64,"name":"Published, approved, waiting for approval","teamId":1,"description":null,"usedApps":["http"],"public":true,"published":"2020-12-01T15:18:31.790Z","approved":"2020-12-02T09:44:42.045Z","approvedId":38,"requestedApproval":true,"publishedId":40,"publicUrl":"37-published-approved-waiting-for-approval","approvedName":"Published, approved, waiting for approval","publishedName":"Published, approved, waiting for approval"},{"id":62,"name":"Published, waiting for approval","teamId":1,"description":null,"usedApps":["http"],"public":true,"published":"2020-11-23T12:22:36.495Z","approved":null,"approvedId":null,"requestedApproval":true,"publishedId":36,"publicUrl":"36-published-waiting-for-approval","approvedName":null,"publishedName":"Published, waiting for approval"}],"pg":{"sortBy":"name","limit":10,"sortDir":"asc","offset":0}}}}}}},"post":{"tags":["Templates"],"summary":"Create template","description":"Creates a new template with data passed in the request body. In the response, it returns all details of the created template.","security":[{"token":["templates:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"type":"integer","description":"The unique numeric ID of the team in which the template will be created."},"language":{"type":"string","description":"The language of the template determining in which language template details such as module names will be displayed. This property also impacts the visibility of the created template and cannot be changed later."},"blueprint":{"type":"object","properties":{"flow":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"ca":{"type":"string"},"qs":{"type":"array","items":{}},"url":{"type":"string","format":"uri"},"gzip":{"type":"boolean"},"method":{"type":"string"},"headers":{"type":"array","items":{}},"timeout":{"type":"string"},"authPass":{"type":"string"},"authUser":{"type":"string"},"bodyType":{"type":"string"},"shareCookies":{"type":"boolean"},"parseResponse":{"type":"boolean"},"followRedirect":{"type":"boolean"},"useQuerystring":{"type":"boolean"},"rejectUnauthorized":{"type":"boolean"}}},"module":{"type":"string","format":"uri"},"onerror":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"count":{"type":"string","format":"utc-millisec"},"retry":{"type":"boolean"},"interval":{"type":"string","format":"utc-millisec"}}},"module":{"type":"string","format":"uri"},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}},"restore":{"type":"object","properties":{"retry":{"type":"object","properties":{"mode":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}}}},"parameters":{"type":"object"}}}},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object"}},"restore":{"type":"object","properties":{"qs":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"method":{"type":"object","properties":{"mode":{"type":"string"},"label":{"type":"string"}}},"headers":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"bodyType":{"type":"object","properties":{"label":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}},"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}}}},"parameters":{"type":"object","properties":{"handleErrors":{"type":"boolean"}}}}}},"name":{"type":"string"},"metadata":{"type":"object","properties":{"version":{"type":"integer"},"scenario":{"type":"object","properties":{"maxErrors":{"type":"integer"},"autoCommit":{"type":"boolean"},"roundtrips":{"type":"integer","deprecated":true,"description":"This property is deprecated. Any value sent in a request is ignored: it is always stored and returned as `1`, and every execution runs a single cycle.\n"}}}}}},"description":"The full blueprint of the scenario or template. It contains information about the general setup and all included apps and modules, and their settings."},"scheduling":{"description":"The scheduling details of the template.","type":"object","properties":{"type":{"type":"string","enum":["immediately","indefinitely","once","daily","weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":0},"date":{"type":"string","format":"date-time"},"between":{"type":"array","items":{"type":"string","format":"date-time"}},"time":{"type":"string","pattern":"^[0-2]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?(\\\\.[0-9]+)?$"},"days":{"type":"array","items":{"type":"integer","minimum":0,"maximum":31}},"months":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12}},"restrict":{"type":"array","items":{"type":"object","properties":{"time":{"type":"array","items":{"type":"string","nullable":true,"pattern":"^[0-2]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?(\\\\.[0-9]+)?$"}},"days":{"type":"array","items":{"type":"integer","minimum":0,"maximum":31}},"months":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12}}}}},"maximum_runs_per_minute":{"type":"integer","nullable":true,"minimum":1,"maximum":10000}}},"controller":{"description":"The controller of the template. This property refers to wizards that can be added to each module in the template from the Make interface. The wizards contain short instructions for other users explaining how to use the template step by step.","type":"object","properties":{"name":{"type":"string","maxLength":120,"minLength":1},"description":{"type":"string","maxLength":1500,"minLength":0},"idSequence":{"type":"integer"},"modules":{"type":"object"}}}}},"example":{"teamId":1,"language":"en","blueprint":"{\"flow\":[{\"id\":1,\"module\":\"http:ActionGetFile\",\"version\":3,\"parameters\":{\"handleErrors\":false},\"mapper\":{\"url\":\"https://google.com\",\"method\":\"get\",\"shareCookies\":false},\"metadata\":{\"designer\":{\"x\":0,\"y\":0},\"parameters\":[{\"name\":\"handleErrors\",\"label\":\"Evaluate all states as errors (except for 2xx and 3xx )\",\"type\":\"boolean\",\"required\":true}],\"expect\":[{\"name\":\"url\",\"label\":\"URL\",\"type\":\"url\",\"required\":true},{\"name\":\"method\",\"label\":\"Method\",\"type\":\"hidden\"},{\"name\":\"shareCookies\",\"label\":\"Share cookies with other HTTP modules\",\"type\":\"boolean\",\"required\":true}]}}],\"metadata\":{\"version\":1,\"scenario\":{\"roundtrips\":1,\"maxErrors\":3,\"autoCommit\":true,\"autoCommitTriggerLast\":true,\"sequential\":false,\"confidential\":false,\"dataloss\":false,\"dlq\":false, \"freshVariables\": false},\"designer\":{\"orphans\":[]}}}","scheduling":"{\"type\":\"indefinitely\",\"interval\":900}","controller":"{\"modules\":{},\"name\":\"New template\",\"idSequence\":2}"}}}},"parameters":[{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","description","usedApps","public","published","approved","approvedId","requestedApproval","publishedId","publicUrl","approvedName","publishedName"]}},"description":"Specifies the group of values to return. For example, you may want to retrieve only names and IDs of the newly created template.","example":["id","name"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"template":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"teamName":{"type":"string"},"organizationId":{"type":"string"},"description":{"type":"string"},"usedApps":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"published":{"type":"string","format":"date-time"},"approved":{"type":"string","format":"date-time"},"approvedId":{"type":"integer"},"requestedApproval":{"type":"boolean"},"publishedId":{"type":"integer"},"publicUrl":{"type":"string"},"approvedName":{"type":"string"},"publishedName":{"type":"string"}}}}},"example":{"template":{"id":67,"name":"New template","teamId":1,"description":null,"usedApps":["http"],"public":false,"published":null,"approved":null,"approvedId":null,"requestedApproval":false,"publishedId":null,"publicUrl":null,"approvedName":null,"publishedName":null}}}}},"403":{"description":"Either the user lacks the `template add` permission in `teamId` (`IM002`), or a module in the blueprint places a locked connection or key the user is not allowed to use (`IM002`, placement guard). The placement-guard rejection is returned only when locked-entities enforcement is enabled for the organization; templates have no per-save baseline to grandfather against, so every such placement is rejected.\n"}}}},"/templates/{templateId}":{"get":{"tags":["Templates"],"summary":"Get template details","description":"Retrieves details of a template with a given ID.","security":[{"token":["templates:read"]}],"parameters":[{"name":"templateId","in":"path","schema":{"type":"integer"},"required":true,"description":"The unique ID of the private template. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint.","example":164},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","description","usedApps","public","published","approved","approvedId","requestedApproval","publishedId","publicUrl","approvedName","publishedName"]}},"description":"Specifies the group of values to return. For example, you may want to retrieve only the ID and name of the template.","examples":{"id-name":{"summary":"Return ID and name","value":["id","name"]},"all-columns":{"summary":"Return all details","value":["id","name","teamId","description","usedApps","public","published","approved","approvedId","requestedApproval","publishedId","publicUrl","approvedName","publishedName"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"template":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"teamName":{"type":"string"},"organizationId":{"type":"string"},"description":{"type":"string"},"usedApps":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"published":{"type":"string","format":"date-time"},"approved":{"type":"string","format":"date-time"},"approvedId":{"type":"integer"},"requestedApproval":{"type":"boolean"},"publishedId":{"type":"integer"},"publicUrl":{"type":"string"},"approvedName":{"type":"string"},"publishedName":{"type":"string"}}}}},"examples":{"id-name":{"summary":"Return ID and name","description":"Returns ID and name of the template","value":{"template":{"id":164,"name":"Published, approved, waiting for approval"}}},"all-columns":{"summary":"Return all details","description":"Returns all details of the template","value":{"template":{"id":164,"name":"Published, approved, waiting for approval","teamId":1,"description":null,"usedApps":["http"],"public":true,"published":"2020-12-01T15:18:31.790Z","approved":"2020-12-02T09:44:42.045Z","approvedId":38,"requestedApproval":true,"publishedId":40,"publicUrl":"37-published-approved-waiting-for-approval","approvedName":"Published, approved, waiting for approval","publishedName":"Published, approved, waiting for approval"}}}}}}}}},"patch":{"tags":["Templates"],"summary":"Update template","description":"Updates a template with a given ID by passing new values in the request body. Any property that is not provided will be left unchanged. In the response, it returns all details of the updated template including properties that were not changed.","security":[{"token":["templates:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The new name of the template. The name does not need to be unique."},"blueprint":{"type":"object","properties":{"flow":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"ca":{"type":"string"},"qs":{"type":"array","items":{}},"url":{"type":"string","format":"uri"},"gzip":{"type":"boolean"},"method":{"type":"string"},"headers":{"type":"array","items":{}},"timeout":{"type":"string"},"authPass":{"type":"string"},"authUser":{"type":"string"},"bodyType":{"type":"string"},"shareCookies":{"type":"boolean"},"parseResponse":{"type":"boolean"},"followRedirect":{"type":"boolean"},"useQuerystring":{"type":"boolean"},"rejectUnauthorized":{"type":"boolean"}}},"module":{"type":"string","format":"uri"},"onerror":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"count":{"type":"string","format":"utc-millisec"},"retry":{"type":"boolean"},"interval":{"type":"string","format":"utc-millisec"}}},"module":{"type":"string","format":"uri"},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}},"restore":{"type":"object","properties":{"retry":{"type":"object","properties":{"mode":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}}}},"parameters":{"type":"object"}}}},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object"}},"restore":{"type":"object","properties":{"qs":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"method":{"type":"object","properties":{"mode":{"type":"string"},"label":{"type":"string"}}},"headers":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"bodyType":{"type":"object","properties":{"label":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}},"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}}}},"parameters":{"type":"object","properties":{"handleErrors":{"type":"boolean"}}}}}},"name":{"type":"string"},"metadata":{"type":"object","properties":{"version":{"type":"integer"},"scenario":{"type":"object","properties":{"maxErrors":{"type":"integer"},"autoCommit":{"type":"boolean"},"roundtrips":{"type":"integer","deprecated":true,"description":"This property is deprecated. Any value sent in a request is ignored: it is always stored and returned as `1`, and every execution runs a single cycle.\n"}}}}}},"description":"The full blueprint of the template. It contains information about the general setup and all included apps and modules, and their settings."},"scheduling":{"description":"The scheduling details of the template.","type":"object","properties":{"type":{"type":"string","enum":["immediately","indefinitely","once","daily","weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":0},"date":{"type":"string","format":"date-time"},"between":{"type":"array","items":{"type":"string","format":"date-time"}},"time":{"type":"string","pattern":"^[0-2]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?(\\\\.[0-9]+)?$"},"days":{"type":"array","items":{"type":"integer","minimum":0,"maximum":31}},"months":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12}},"restrict":{"type":"array","items":{"type":"object","properties":{"time":{"type":"array","items":{"type":"string","nullable":true,"pattern":"^[0-2]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?(\\\\.[0-9]+)?$"}},"days":{"type":"array","items":{"type":"integer","minimum":0,"maximum":31}},"months":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12}}}}},"maximum_runs_per_minute":{"type":"integer","nullable":true,"minimum":1,"maximum":10000}}},"controller":{"description":"The controller of the template. This property refers to wizards that can be added to each module in the template from the Make interface. The wizards contain short instructions for other users explaining how to use the template step by step.","type":"object","properties":{"name":{"type":"string","maxLength":120,"minLength":1},"description":{"type":"string","maxLength":1500,"minLength":0},"idSequence":{"type":"integer"},"modules":{"type":"object"}}}}},"example":{"name":"Renamed template","blueprint":"{\"flow\":[{\"id\":1,\"module\":\"http:ActionGetFile\",\"version\":3,\"parameters\":{\"handleErrors\":false},\"mapper\":{\"url\":\"https://google.com\",\"method\":\"get\",\"shareCookies\":false},\"metadata\":{\"designer\":{\"x\":0,\"y\":0},\"parameters\":[{\"name\":\"handleErrors\",\"label\":\"Evaluate all states as errors (except for 2xx and 3xx )\",\"type\":\"boolean\",\"required\":true}],\"expect\":[{\"name\":\"url\",\"label\":\"URL\",\"type\":\"url\",\"required\":true},{\"name\":\"method\",\"label\":\"Method\",\"type\":\"hidden\"},{\"name\":\"shareCookies\",\"label\":\"Share cookies with other HTTP modules\",\"type\":\"boolean\",\"required\":true}]}}],\"metadata\":{\"version\":1,\"scenario\":{\"roundtrips\":1,\"maxErrors\":3,\"autoCommit\":true,\"autoCommitTriggerLast\":true,\"sequential\":false,\"confidential\":false,\"dataloss\":false,\"dlq\":false,\"freshVariables\": false},\"designer\":{\"orphans\":[]}}}","scheduling":"{\"type\":\"indefinitely\",\"interval\":900}","controller":"{\"modules\":{},\"name\":\"New template\",\"idSequence\":2}"}}}},"parameters":[{"name":"templateId","in":"path","schema":{"type":"integer"},"required":true,"description":"The unique ID of the private template. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint.","example":164},{"name":"templatePublicId","in":"query","schema":{"type":"integer"},"description":"The unique ID of the public version of the approved template. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint as one of the following IDs: `publishedId` for all published templates that are waiting for approval or not, or `approvedId` for approved templates.","example":18},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","description","usedApps","public","published","approved","approvedId","requestedApproval","publishedId","publicUrl","approvedName","publishedName"]}},"description":"Specifies the group of values to return. For example, you may want to retrieve only the description of the template.","example":["description"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"template":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"teamName":{"type":"string"},"organizationId":{"type":"string"},"description":{"type":"string"},"usedApps":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"published":{"type":"string","format":"date-time"},"approved":{"type":"string","format":"date-time"},"approvedId":{"type":"integer"},"requestedApproval":{"type":"boolean"},"publishedId":{"type":"integer"},"publicUrl":{"type":"string"},"approvedName":{"type":"string"},"publishedName":{"type":"string"}}}}}},"example":{"template":[{"id":164,"name":"Renamed template","teamId":1,"description":null,"usedApps":["http"],"public":false,"published":null,"approved":null,"approvedId":null,"requestedApproval":false,"publishedId":null,"publicUrl":null,"approvedName":null,"publishedName":null}]}}}},"403":{"description":"Either the user lacks the `template edit` permission in the template's team (`IM002`), or a module in the blueprint places a locked connection or key the user is not allowed to use (`IM002`, placement guard). The placement-guard rejection is returned only when locked-entities enforcement is enabled for the organization; an untouched frozen module and releasing a locked entity (swapping it out or removing its module) always pass, and a teamless template is never guarded.\n"}}},"delete":{"tags":["Templates"],"summary":"Delete template","description":"Deletes a template with a given ID and returns the ID in the response.","security":[{"token":["templates:write"]}],"parameters":[{"name":"templateId","in":"path","schema":{"type":"integer"},"required":true,"description":"The unique ID of the private template. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint.","example":164},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"description":"Confirms the deletion of the private or published template. If the parameter is missing or it is set to `false` an error code is returned and the resource is not deleted. The public (approved) templates can only be deleted by administrators.","example":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"template":{"type":"integer"}}},"example":{"template":164}}}}}}},"/templates/{templateId}/blueprint":{"get":{"tags":["Templates"],"summary":"Get template blueprint","description":"Retrieves a blueprint of a template with a given ID.","security":[{"token":["templates:read"]}],"parameters":[{"name":"templateId","in":"path","schema":{"type":"integer"},"required":true,"description":"The unique ID of the private template. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint.","example":164},{"name":"forUse","in":"query","schema":{"type":"boolean"},"description":"If this parameter is set to `true`, it means the blueprint should be used for creating a scenario from the template.","example":true},{"name":"forEdit","in":"query","schema":{"type":"boolean"},"description":"If this parameter is set to `true`, the blueprint is returned for editing the template: the values of the fields marked as \"Use in Wizard\" (for example connections) are filled in, and disabled or empty routes, agent tools and approval notifications are kept. Has no effect when `forUse` is `true`. Without either parameter, the values are filled in but disabled and empty routes, agent tools and approval notifications are left out.","example":true},{"name":"templatePublicId","in":"query","schema":{"type":"integer"},"description":"The unique ID of the public version of the approved template. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint as one of the following IDs: `publishedId` for all published templates that are waiting for approval or not, or `approvedId` for approved templates.","example":18}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"blueprint":{"type":"object","properties":{"flow":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"ca":{"type":"string"},"qs":{"type":"array","items":{}},"url":{"type":"string","format":"uri"},"gzip":{"type":"boolean"},"method":{"type":"string"},"headers":{"type":"array","items":{}},"timeout":{"type":"string"},"authPass":{"type":"string"},"authUser":{"type":"string"},"bodyType":{"type":"string"},"shareCookies":{"type":"boolean"},"parseResponse":{"type":"boolean"},"followRedirect":{"type":"boolean"},"useQuerystring":{"type":"boolean"},"rejectUnauthorized":{"type":"boolean"}}},"module":{"type":"string","format":"uri"},"onerror":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"count":{"type":"string","format":"utc-millisec"},"retry":{"type":"boolean"},"interval":{"type":"string","format":"utc-millisec"}}},"module":{"type":"string","format":"uri"},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}},"restore":{"type":"object","properties":{"retry":{"type":"object","properties":{"mode":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}}}},"parameters":{"type":"object"}}}},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object"}},"restore":{"type":"object","properties":{"qs":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"method":{"type":"object","properties":{"mode":{"type":"string"},"label":{"type":"string"}}},"headers":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"bodyType":{"type":"object","properties":{"label":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}},"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}}}},"parameters":{"type":"object","properties":{"handleErrors":{"type":"boolean"}}}}}},"name":{"type":"string"},"metadata":{"type":"object","properties":{"version":{"type":"integer"},"scenario":{"type":"object","properties":{"maxErrors":{"type":"integer"},"autoCommit":{"type":"boolean"},"roundtrips":{"type":"integer","deprecated":true,"description":"This property is deprecated. Any value sent in a request is ignored: it is always stored and returned as `1`, and every execution runs a single cycle.\n"}}}}}}},"controller":{"type":"object","properties":{"name":{"type":"string"},"modules":{"type":"object"},"idSequence":{"type":"integer"}}},"scheduling":{"type":"object","properties":{"type":{"type":"string"},"interval":{"type":"integer"}}},"language":{"type":"string"}}},"example":{"blueprint":{"flow":[{"id":1,"mapper":{"url":"https://seznam.cz","method":"get","shareCookies":false},"module":"http:ActionGetFile","version":3,"metadata":{"expect":[{"name":"url","type":"url","label":"URL","required":true},{"name":"method","type":"hidden","label":"Method"},{"name":"shareCookies","type":"boolean","label":"Share cookies with other HTTP modules","required":true}],"designer":{"x":0,"y":0},"parameters":[{"name":"handleErrors","type":"boolean","label":"Evaluate all states as errors (except for 2xx and 3xx )","required":true}]},"parameters":{"handleErrors":false}}],"metadata":{"version":1,"designer":{"orphans":[]},"scenario":{"dlq":false,"dataloss":false,"maxErrors":3,"autoCommit":true,"roundtrips":1,"sequential":false,"confidential":false,"autoCommitTriggerLast":true}}},"controller":{"name":"Template name","modules":{},"idSequence":2},"scheduling":{"type":"indefinitely","interval":1000},"language":"en"}}}}}}},"/templates/{templateId}/publish":{"post":{"tags":["Templates"],"summary":"Publish template","description":"Publishes a private template with a given ID. In the response, it returns all details of the template.","security":[{"token":["templates:write"]}],"requestBody":{"content":{}},"parameters":[{"name":"templateId","in":"path","schema":{"type":"integer"},"required":true,"description":"The unique ID of the private template. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint.","example":164},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","description","usedApps","public","published","approved","approvedId","requestedApproval","publishedId","publicUrl","approvedName","publishedName"]}},"description":"Specifies the group of values to return. For example, you may want to retrieve only the name and ID of the published template.","examples":{"id-name":{"summary":"id, name","value":["id","name"]},"all-columns":{"summary":"All columns","value":["id","name","teamId","description","usedApps","public","published","approved","approvedId","requestedApproval","publishedId","publicUrl","approvedName","publishedName"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"template":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"teamName":{"type":"string"},"organizationId":{"type":"string"},"description":{"type":"string"},"usedApps":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"published":{"type":"string","format":"date-time"},"approved":{"type":"string","format":"date-time"},"approvedId":{"type":"integer"},"requestedApproval":{"type":"boolean"},"publishedId":{"type":"integer"},"publicUrl":{"type":"string"},"approvedName":{"type":"string"},"publishedName":{"type":"string"}}}}},"examples":{"all-columns":{"summary":"Return all details","description":"Returns all details of the published template","value":{"template":{"id":164,"name":"Renamed template","teamId":1,"description":null,"usedApps":["http"],"public":true,"published":"2020-12-03T14:11:08.327Z","approved":null,"approvedId":null,"requestedApproval":false,"publishedId":48,"publicUrl":"48-renamed-template","approvedName":null,"publishedName":"Renamed template"}}},"id-name":{"summary":"Return ID and name","description":"Returns only ID and name of the published template","value":{"template":{"id":164,"name":"Renamed template"}}}}}}}}}},"/templates/{templateId}/request-approval":{"post":{"tags":["Templates"],"summary":"Request approval","description":"Requests approval of the published template with the given IDs of its private and published versions. In the response, it returns all details of the template.","security":[{"token":["templates:write"]}],"parameters":[{"name":"templateId","in":"path","schema":{"type":"integer"},"required":true,"description":"The unique ID of the private template. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint.","example":164},{"name":"templatePublicId","in":"query","schema":{"type":"integer"},"description":"The unique ID of the public version of the approved template. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint as one of the following IDs: `publishedId` for all published templates that are waiting for approval or not, or `approvedId` for approved templates.","example":18},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","teamId","description","usedApps","public","published","approved","approvedId","requestedApproval","publishedId","publicUrl","approvedName","publishedName"]}},"description":"Specifies the group of values to return. For example, you may want to retrieve only the ID and name of the template you requested approval for.","examples":{"all-columns":{"summary":"All columns","value":["id","name","teamId","description","usedApps","public","published","approved","approvedId","requestedApproval","publishedId","publicUrl","approvedName","publishedName"]},"id-name":{"summary":"Id, name","value":["id","name"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"template":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"teamId":{"type":"integer"},"teamName":{"type":"string"},"organizationId":{"type":"string"},"description":{"type":"string"},"usedApps":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"published":{"type":"string","format":"date-time"},"approved":{"type":"string","format":"date-time"},"approvedId":{"type":"integer"},"requestedApproval":{"type":"boolean"},"publishedId":{"type":"integer"},"publicUrl":{"type":"string"},"approvedName":{"type":"string"},"publishedName":{"type":"string"}}}}},"examples":{"all-columns":{"summary":"Return all details","description":"Returns all details of the template requested to be approved","value":{"template":{"id":164,"name":"Renamed template","teamId":1,"description":null,"usedApps":["http"],"public":true,"published":"2020-12-03T14:11:08.327Z","approved":null,"approvedId":null,"requestedApproval":true,"publishedId":48,"publicUrl":"48-renamed-template","approvedName":null,"publishedName":"Renamed template"}}},"id-name":{"summary":"Return ID and name","description":"Returns only ID and name of the template requested to be approved","value":{"template":{"id":164,"name":"Renamed template"}}}}}}}}}},"/templates/public":{"get":{"tags":["Templates / Public"],"summary":"List public (approved) templates","description":"Retrieves a collection of all public (approved) templates that are available for anyone. Returned templates are sorted by usage in descending order.","security":[{"token":["templates:read"]}],"parameters":[{"name":"includeEn","in":"query","schema":{"type":"boolean"},"description":"If this parameter is set to `true`, it means English templates should be included in the response. This is relevant only if the user's language is not English.","example":true},{"name":"name","in":"query","schema":{"type":"string"},"description":"The name of the template. This parameter allows limiting returned results to the template(s) with the given name.","example":"my first template"},{"name":"usedApps[]","in":"query","schema":{"type":"array","items":{"type":"string"}},"example":["http"],"description":"The array with the text IDs of the apps used in the templates. This parameter allows you to get only the templates containing specific apps."},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","description","url","usedApps","usage"]}},"description":"Specifies the group of values to return. For example, you may want to retrieve only the names and IDs of the public templates."},{"name":"pg[sortBy]","in":"query","schema":{"type":"string"},"description":"The value that will be used to sort returned entities by."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The value of entities you want to skip before getting entities you need."},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"Sets the maximum number of results per page in the API call response. For example, `pg[limit]=100`. The default number varies with different API endpoints."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"templatesPublic":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"url":{"type":"string"},"usedApps":{"type":"array","items":{"type":"string"}},"usage":{"type":"integer"}}}},"pg":{"type":"object","properties":{"last":{"type":"string"},"showLast":{"type":"boolean"},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}},"example":{"templatesPublic":[{"id":13,"name":"Http template example","description":null,"url":"13-http-template-example","usedApps":["http"],"usage":321},{"id":17,"name":"Multiple apps template example","description":null,"url":"16-multiple-apps-template-example","usedApps":["discord","http","tools","util","gmail"],"usage":52}],"pg":{"sortBy":"usage","limit":100,"sortDir":"desc","offset":0}}}}}}}},"/templates/public/{templateUrl}":{"get":{"tags":["Templates / Public"],"summary":"Get public (approved) template details","description":"Retrieves details of a public (approved) template with a given `publicUrl`.","security":[{"token":["templates:read"]}],"parameters":[{"name":"templateUrl","in":"path","schema":{"type":"string"},"required":true,"description":"The unique URL of the public (approved) template consisting of the template ID and name. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint.","example":"16-multiple-apps-template-example"},{"name":"templatePublicId","in":"query","schema":{"type":"integer"},"description":"The unique ID of the public version of the approved template. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint as one of the following IDs: `publishedId` for all published templates that are waiting for approval or not, or `approvedId` for approved templates.","example":18},{"name":"cols[]","in":"query","schema":{"type":"array","items":{"type":"string","enum":["id","name","description","url","usedApps","usage"]}},"description":"Specifies the group of values to return. For example, you may want to retrieve only information about the apps used in the template."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"templatePublic":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"url":{"type":"string"},"usedApps":{"type":"array","items":{"type":"string"}},"usage":{"type":"integer"}}}}},"example":{"templatePublic":{"id":18,"name":"Multiple apps template example","description":null,"url":"16-multiple-apps-template-example","usedApps":["discord","http","tools","util","gmail"],"usage":52}}}}}}}},"/templates/public/{templateUrl}/blueprint":{"get":{"tags":["Templates / Public"],"summary":"Get public (approved) template blueprint","description":"Retrieves a blueprint of a public (approved) template with a given `publicUrl`.","security":[{"token":["templates:read"]}],"parameters":[{"name":"templateUrl","in":"path","schema":{"type":"string"},"required":true,"description":"The unique URL of the public (approved) template consisting of the template ID and name. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint.","example":"16-multiple-apps-template-example"},{"name":"templatePublicId","in":"query","schema":{"type":"integer"},"description":"The unique ID of the public version of the approved template. It can be retrieved from the [List templates](/api-reference/templates/get--templates.md) endpoint as one of the following IDs: `publishedId` for all published templates that are waiting for approval or not, or `approvedId` for approved templates.","example":18}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"blueprint":{"type":"object","properties":{"flow":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"ca":{"type":"string"},"qs":{"type":"array","items":{}},"url":{"type":"string","format":"uri"},"gzip":{"type":"boolean"},"method":{"type":"string"},"headers":{"type":"array","items":{}},"timeout":{"type":"string"},"authPass":{"type":"string"},"authUser":{"type":"string"},"bodyType":{"type":"string"},"shareCookies":{"type":"boolean"},"parseResponse":{"type":"boolean"},"followRedirect":{"type":"boolean"},"useQuerystring":{"type":"boolean"},"rejectUnauthorized":{"type":"boolean"}}},"module":{"type":"string","format":"uri"},"onerror":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"mapper":{"type":"object","properties":{"count":{"type":"string","format":"utc-millisec"},"retry":{"type":"boolean"},"interval":{"type":"string","format":"utc-millisec"}}},"module":{"type":"string","format":"uri"},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}},"restore":{"type":"object","properties":{"retry":{"type":"object","properties":{"mode":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}}}},"parameters":{"type":"object"}}}},"version":{"type":"integer"},"metadata":{"type":"object","properties":{"expect":{"type":"array","items":{"type":"object"}},"restore":{"type":"object","properties":{"qs":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"method":{"type":"object","properties":{"mode":{"type":"string"},"label":{"type":"string"}}},"headers":{"type":"object","properties":{"mode":{"type":"string"},"items":{"type":"array","items":{}}}},"bodyType":{"type":"object","properties":{"label":{"type":"string"}}}}},"designer":{"type":"object","properties":{"x":{"type":"integer"},"y":{"type":"integer"}}},"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"}}}}}},"parameters":{"type":"object","properties":{"handleErrors":{"type":"boolean"}}}}}},"name":{"type":"string"},"metadata":{"type":"object","properties":{"version":{"type":"integer"},"scenario":{"type":"object","properties":{"maxErrors":{"type":"integer"},"autoCommit":{"type":"boolean"},"roundtrips":{"type":"integer","deprecated":true,"description":"This property is deprecated. Any value sent in a request is ignored: it is always stored and returned as `1`, and every execution runs a single cycle.\n"}}}}}}},"controller":{"type":"object","properties":{"name":{"type":"string"},"modules":{"type":"object"},"idSequence":{"type":"integer"}}},"scheduling":{"type":"object","properties":{"type":{"type":"string"},"interval":{"type":"integer"}}},"language":{"type":"string"}}},"example":{"blueprint":{"flow":[{"id":1,"mapper":{"url":"https://google.com","method":"get","shareCookies":false},"module":"http:ActionGetFile","version":3,"metadata":{"expect":[{"name":"url","type":"url","label":"URL","required":true},{"name":"method","type":"hidden","label":"Method"},{"name":"shareCookies","type":"boolean","label":"Share cookies with other HTTP modules","required":true}],"designer":{"x":0,"y":0},"parameters":[{"name":"handleErrors","type":"boolean","label":"Evaluate all states as errors (except for 2xx and 3xx )","required":true}]},"parameters":{"handleErrors":false}}],"metadata":{"version":1,"designer":{"orphans":[]},"scenario":{"dlq":false,"dataloss":false,"maxErrors":3,"autoCommit":true,"roundtrips":1,"sequential":false,"confidential":false,"autoCommitTriggerLast":true,"freshVariables":false}}},"controller":{"name":"New template","modules":{},"idSequence":2},"scheduling":{"type":"indefinitely","interval":900},"language":"en"}}}}}}},"/users":{"get":{"tags":["Users"],"summary":"List users","description":"Retrieves a collection of all users for a team or an organization with a given ID. Returned users are sorted by id in descending order.","security":[{"token":["user:read"]}],"parameters":[{"description":"The unique ID of the organization whose users will be retrieved. If this parameter is set, the `teamId` parameter must be skipped. For each request either `teamId` or `organizationId` must be defined.","name":"organizationId","in":"query","schema":{"type":"integer"}},{"description":"The unique ID of the team whose users will be retrieved. If this parameter is set, the `organizationId` parameter must be skipped. For each request either `teamId` or `organizationId` must be defined.","name":"teamId","in":"query","schema":{"type":"integer"},"example":1},{"description":"Optional filter parameter.","name":"name","in":"query","schema":{"type":"string"}},{"description":"Optional filter parameter.","name":"email","in":"query","schema":{"type":"string"}},{"description":"Optional filter parameter. If this parameter is set, the `teamId` parameter must be set as well.","name":"teamRoleId","in":"query","schema":{"type":"integer"},"examples":{"filtering":{"value":3}}},{"description":"Optional filter parameter. If this parameter is set, the `organizationId` parameter must be set as well.","name":"organizationRoleId","in":"query","schema":{"type":"integer"},"examples":{"filtering":{"value":13}}},{"description":"Filter by team ID. Use 0 to find users not assigned to any team. Requires organizationId.","name":"filterByTeamId","in":"query","schema":{"type":"integer"},"examples":{"filtering":{"value":5},"noTeam":{"value":0}}},{"name":"ids","description":"Optional filter parameter. Restricts the result to users whose ID is in the given list.","in":"query","schema":{"type":"array","items":{"type":"integer"}},"example":[1,2]},{"name":"tfaStatus","description":"The user's two-factor authentication (TFA) status. This field is available only on plans that have the TFA enforcement enabled.","in":"query","schema":{"type":"integer","enum":[0,1,2]},"examples":{"filtering":{"value":1}}},{"name":"cols[]","in":"query","description":"An array of columns that should be returned from the API. Can be used to save bandwidth when not all properties are needed.","schema":{"type":"array","items":{"type":"string","enum":["id","name","email","language","timezoneId","localeId","countryId","features","avatar","lastLogin","tfaStatus","userTeamIds","privateSpace"]}}},{"name":"pg[sortBy]","description":"The value that will be used to sort returned entities by. Users can be sorted by name, id and email.","in":"query","schema":{"type":"string","enum":["name","id","email"]}},{"name":"pg[sortDir]","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"The sorting order. It accepts the ascending and descending direction specifiers."},{"name":"pg[offset]","in":"query","schema":{"type":"integer"},"description":"The number of entities you want to skip before getting entities you want."},{"name":"pg[limit]","in":"query","schema":{"type":"integer"},"description":"The maximum number of entities you want to get in the response."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"language":{"type":"string"},"timezoneId":{"type":"integer"},"localeId":{"type":"integer"},"countryId":{"type":"integer"},"features":{"type":"object","properties":{"allow_apps":{"type":"boolean"}}},"avatar":{"type":"string","format":"uri"},"lastLogin":{"type":"string","format":"date-time"},"tfaStatus":{"type":"integer","nullable":true,"enum":[0,1,2],"description":"Two-factor authentication status:\n- 0: No TFA set\n- 1: TFA active (authenticator app)\n- 2: External authentication (Social SSO)\n\nIt is only supported on Make's public cloud instances.\n"},"supportEligible":{"type":"boolean","description":"Whether the user is eligible for contact support. False if all user's organizations are on Free plan and account is older than 90 days."},"userTeamIds":{"type":"array","nullable":true,"description":"IDs of teams the user belongs to within the organization. Only returned when explicitly requested via cols[]=userTeamIds and organizationId is provided.","items":{"type":"integer"}},"privateSpace":{"nullable":true,"description":"The user's personal private space in the organization. Only returned when explicitly requested via cols[]=privateSpace with organizationId on a public instance.","type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"globalAgentsEnabled":{"type":"boolean"},"type":{"type":"string","enum":["personal"]},"operationsLimit":{"type":"integer","nullable":true},"transferLimit":{"type":"bigint","nullable":true},"consumedOperations":{"type":"integer","nullable":true},"consumedTransfer":{"type":"bigint","nullable":true},"isPaused":{"type":"boolean","nullable":true},"consumedCenticredits":{"type":"integer","nullable":true}}}}}},"pg":{"type":"object","properties":{"last":{"type":"string","description":"Shown only when using the `last` based pagination."},"showLast":{"type":"boolean","description":"Shown only when using the `last` based pagination."},"sortBy":{"type":"string"},"sortDir":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer","description":"Shown only when using the `offset` based pagination."}}}}},"example":{"users":[{"id":1,"name":"Administrator","email":"admin@make.cloud","language":"en","timezoneId":113,"localeId":18,"countryId":202,"features":{},"avatar":"https://secure.gravatar.com/avatar/6b1a74d20d925c12a73af32bf0dd7164.jpg?d=mm","lastLogin":"2022-04-04T10:23:34.347Z","tfaStatus":0}],"pg":{"sortBy":"name","sortDir":"desc","offset":0,"limit":10}}}}}}},"delete":{"tags":["Users"],"summary":"Delete current user","description":"Deletes the authenticated user's own account. Requires password and/or 2FA, if configured.  Optionally deletes all user connections (accounts, webhooks, etc).","security":[{"token":["user:write"]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"deleteConnections":{"type":"boolean","description":"Whether to delete all user connections (accounts, webhooks, etc).","default":false},"currentPassword":{"type":"string","description":"User's current password (required if user has a password set)."},"tfaCode":{"type":"string","description":"Two-factor authentication code (required if 2FA is enabled)."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"integer"}}},"example":{"user":3}}}}}}},"/users/{userId}":{"patch":{"tags":["Users"],"summary":"Update user","description":"Updates a user with a given ID by passing new data in the request body. Any property that is not provided will be left unchanged. As the response, it returns all details of the updated user including properties that were not changed.","security":[{"token":["user:write"]}],"parameters":[{"required":true,"name":"userId","in":"path","schema":{"type":"string"},"description":"The unique ID of the user. It can be retrieved from the [List users](/api-reference/users/get--users.md) endpoint.","example":1}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the user. The name must be at most 250 characters long and does not need to be unique. The name may contain only letters, numbers, spaces, and the following special characters: `'`, `-`, `.`, `(`, `)`, `*`, `+`, `,`, `@`, `_`, `/`. The name must not start or end with a space."},"language":{"type":"string","description":"The standardized language code. It sets the Make environment language."},"timezoneId":{"type":"integer","description":"The timezone ID corresponding to the local time. The list of all timezones can be retrieved from the `GET /enums/timezones` endpoint."},"localeId":{"type":"integer","description":"The location ID. It sets the Make environment date formats, hour formats, decimal separators, etc. The list of all locales can be retrieved from the `GET /enums/locales` endpoint."},"countryId":{"type":"integer","description":"The country ID. It sets the region of use."}}},"example":{"name":"admin","language":"en","localeId":18,"timezoneId":113,"countryId":1}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"language":{"type":"string"},"timezoneId":{"type":"integer"},"localeId":{"type":"integer"},"countryId":{"type":"integer"},"features":{"type":"object","properties":{"allow_apps":{"type":"boolean"}}},"avatar":{"type":"string","format":"uri"},"lastLogin":{"type":"string","format":"date-time"},"tfaStatus":{"type":"integer","nullable":true,"enum":[0,1,2],"description":"Two-factor authentication status:\n- 0: No TFA set\n- 1: TFA active (authenticator app)\n- 2: External authentication (Social SSO)\n\nIt is only supported on Make's public cloud instances.\n"},"supportEligible":{"type":"boolean","description":"Whether the user is eligible for contact support. False if all user's organizations are on Free plan and account is older than 90 days."},"userTeamIds":{"type":"array","nullable":true,"description":"IDs of teams the user belongs to within the organization. Only returned when explicitly requested via cols[]=userTeamIds and organizationId is provided.","items":{"type":"integer"}},"privateSpace":{"nullable":true,"description":"The user's personal private space in the organization. Only returned when explicitly requested via cols[]=privateSpace with organizationId on a public instance.","type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"globalAgentsEnabled":{"type":"boolean"},"type":{"type":"string","enum":["personal"]},"operationsLimit":{"type":"integer","nullable":true},"transferLimit":{"type":"bigint","nullable":true},"consumedOperations":{"type":"integer","nullable":true},"consumedTransfer":{"type":"bigint","nullable":true},"isPaused":{"type":"boolean","nullable":true},"consumedCenticredits":{"type":"integer","nullable":true}}}}}}},"example":{"user":{"id":1,"name":"Administrator","email":"admin@make.cloud","language":"en","timezoneId":113,"localeId":18,"countryId":202,"features":{},"avatar":"https://secure.gravatar.com/avatar/6b1a74d20d925c12a73af32bf0dd7164.jpg?d=mm","lastLogin":"2022-04-04T10:23:34.347Z","tfaStatus":0}}}}}}}},"/users/{userId}/attributes/email":{"put":{"tags":["Users"],"summary":"Update user email","description":"Updates an email for a user with a given ID by passing new data in the request body. It replaces the entire resource with the new values. In the response, it returns the confirmation if the email was changed.","security":[{"token":["user:write"]}],"parameters":[{"required":true,"name":"userId","in":"path","schema":{"type":"string"},"description":"The unique ID of the user. It can be retrieved from the [List users](/api-reference/users/get--users.md) endpoint.","example":1}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"currentEmailAddress":{"type":"string","format":"email","description":"User's current email address."},"newEmailAddress":{"type":"string","format":"email","description":"User's new email address."},"currentPassword":{"type":"string","format":"password","description":"User's current password."}},"required":["currentEmailAddress","newEmailAddress","currentPassword"]},"example":{"currentEmailAddress":"current@email.com","newEmailAddress":"new@email.com","currentPassword":"123456Ab-"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"},"emailSent":{"type":"boolean"}}},"example":{"changed":false,"emailSent":true}}}}}}},"/users/{userId}/attributes/password":{"put":{"tags":["Users"],"summary":"Update user password","description":"Updates a password for a user with a given ID by passing new data in the request body. It replaces the entire resource with the new values. In the response, it returns the confirmation if the password was changed. This endpoint corresponds to changing a password in the user profile when the user is logged in to the Make interface.","security":[{"token":["user:write"]}],"parameters":[{"required":true,"name":"userId","in":"path","schema":{"type":"string"},"description":"The unique ID of the user. It can be retrieved from the [List users](/api-reference/users/get--users.md) endpoint.","example":1}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"currentPassword":{"type":"string","format":"password","description":"The current user password."},"newPassword1":{"type":"string","format":"password","description":"The new user password. The password must be at least 9 characters long and must contain at least one uppercase letter, at least one number, and at least one special character."},"newPassword2":{"type":"string","format":"password","description":"The new user password for confirmation. This password must be the same as the password in the `newPassword1` property."}},"required":["currentPassword","newPassword1","newPassword2"]},"example":{"currentPassword":"123456Ab.","newPassword1":"123456Ab-","newPassword2":"123456Ab-"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changed":{"type":"boolean"}}},"example":{"changed":true}}}}}}},"/users/password-reset-demand":{"post":{"tags":["Users"],"summary":"Send password reset demand","description":"Sends password reset demand for a user with an email passed in the request body. This endpoint corresponds to the **Lost password** function on the login page in the Make interface. In the response, it returns the confirmation if the demand was sent successfully.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"The email of the user for who the password should be reset."}},"required":["email"]},"example":{"email":"ee@eee.com"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/users/password-reset":{"get":{"tags":["Users"],"summary":"Set session for resetting lost password","description":"Checks a hash and sets a session for the [Reset lost password](./post--users--password-reset.md) endpoint. This endpoint corresponds to clicking the **Reset password** link in the **Password reset** email.","parameters":[{"name":"hash","in":"query","schema":{"type":"string"},"description":"The unique hash of the password reset session.","example":"fab680b60044adb766128e713e44e15b"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}},"post":{"tags":["Users"],"summary":"Reset lost password","description":"Updates a password for a user based on the session created when calling the [Prepare session for password reset](./get--users--password-reset.md) endpoint. This endpoint corresponds to setting a new password on the **Lost password** page in the Make interface.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"newPassword1":{"type":"string","description":"The new user password."},"newPassword2":{"type":"string","description":"This password must be the same as the password in the `newPassword1` property."}},"required":["newPassword1","newPassword2"]},"example":{"newPassword1":"Aa123456.","newPassword2":"Aa123456."}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/users/me":{"get":{"tags":["Users / Me"],"summary":"Current user data","description":"Retrieves data about the authenticated user. Refer to the `cols[]` parameter accepted values to get more information about the currently authenticated user.","parameters":[{"name":"includeInvitedOrg","description":"Set this parameter to `true` if you want to get also the user roles in organizations with pending invitation. The default value is `false`.","in":"query","schema":{"type":"boolean"},"examples":{"all-cols":{"value":true}}},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"all-cols":{"value":["id","name","email","language","timezoneId","localeId","countryId","features","avatar","timezone","locale","emailNotifications","usersAdminsRoleId","userOrganizationRoles","userTeamRoles","forceSetPassword","hasPassword","tfaEnabled","tfaStatus","isAffiliatePartner","hasAddedApp","supportEligible"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"authUser":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"language":{"type":"string"},"timezoneId":{"type":"integer"},"localeId":{"type":"integer"},"countryId":{"type":"integer"},"features":{"type":"object","properties":{"allow_apps":{"type":"boolean"}}},"avatar":{"type":"string","format":"uri"},"lastLogin":{"type":"string","format":"date-time"},"tfaStatus":{"type":"integer","nullable":true,"enum":[0,1,2],"description":"Two-factor authentication status:\n- 0: No TFA set\n- 1: TFA active (authenticator app)\n- 2: External authentication (Social SSO)\n\nIt is only supported on Make's public cloud instances.\n"},"supportEligible":{"type":"boolean","description":"Whether the user is eligible for contact support. False if all user's organizations are on Free plan and account is older than 90 days."},"userTeamIds":{"type":"array","nullable":true,"description":"IDs of teams the user belongs to within the organization. Only returned when explicitly requested via cols[]=userTeamIds and organizationId is provided.","items":{"type":"integer"}},"privateSpace":{"nullable":true,"description":"The user's personal private space in the organization. Only returned when explicitly requested via cols[]=privateSpace with organizationId on a public instance.","type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"globalAgentsEnabled":{"type":"boolean"},"type":{"type":"string","enum":["personal"]},"operationsLimit":{"type":"integer","nullable":true},"transferLimit":{"type":"bigint","nullable":true},"consumedOperations":{"type":"integer","nullable":true},"consumedTransfer":{"type":"bigint","nullable":true},"isPaused":{"type":"boolean","nullable":true},"consumedCenticredits":{"type":"integer","nullable":true}}}}}}},"examples":{"default-cols":{"summary":"Current user","description":"Get information about the currently authenticated user.","value":{"authUser":{"id":1,"name":"Martin","email":"admin@make.cloud","language":"en","timezoneId":113,"localeId":18,"countryId":1,"features":{"allow_apps":true},"avatar":"https://secure.gravatar.com/avatar/6b1a74d20d925c12a73af32bf0dd7164.jpg?d=mm","timezone":"Europe/Prague","locale":"en","emailNotifications":null,"hasAddedApp":false,"tfaStatus":0}}},"all-cols":{"summary":"Get all information","description":"Get all available information about the currently authenticated user.","value":{"authUser":{"id":1,"name":"Martin","email":"admin@make.cloud","language":"en","timezoneId":113,"localeId":18,"countryId":1,"features":{"allow_apps":true},"avatar":"https://secure.gravatar.com/avatar/6b1a74d20d925c12a73af32bf0dd7164.jpg?d=mm","timezone":"Europe/Prague","locale":"en","emailNotifications":null,"usersAdminsRoleId":1,"hasPassword":true,"tfaEnabled":false,"tfaStatus":0,"forceSetPassword":false,"userOrganizationRoles":[{"usersRoleId":11,"userId":1,"organizationId":1,"invitation":null},{"usersRoleId":11,"userId":1,"organizationId":3,"invitation":null}],"userTeamRoles":[{"usersRoleId":1,"userId":1,"teamId":1,"changeable":false},{"usersRoleId":1,"userId":1,"teamId":2,"changeable":false}],"hasAddedApp":false,"supportEligible":true}}}}}}}}}},"/users/me/current-authorization":{"get":{"tags":["Users / Me"],"summary":"Current user authorization","description":"Returns current authorization information for the authenticated user including scope and authentication method used.","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"authorization":{"type":"object","properties":{"scope":{"type":"array","items":{"type":"string"},"description":"The scopes for the authenticated user"},"authUsed":{"type":"string","description":"The authentication method that was used"}}}}},"examples":{"default":{"summary":"Current user authorization","description":"Get current authorization information for the authenticated user.","value":{"authorization":{"scope":["read:user","write:scenario"],"authUsed":"token"}}}}}}}}}},"/users/me/onboarding-survey":{"get":{"tags":["Users / Me"],"summary":"Get onboarding survey status","description":"Returns whether the authenticated user has a pending onboarding survey. If the survey has been submitted, the response payload is included.","security":[{"token":["user:read"]}],"responses":{"200":{"description":"Survey status","content":{"application/json":{"schema":{"type":"object","properties":{"pending":{"type":"boolean","description":"Whether the user still needs to complete the onboarding survey."},"response":{"type":"object","description":"The submitted survey response. Only present when `pending` is `false` and a response exists."}},"required":["pending"]},"examples":{"pending":{"summary":"User has not completed the survey","value":{"pending":true}},"completed":{"summary":"User has completed the survey","value":{"pending":false,"response":{"survey_type":"self_serve","schema_version":1,"answers":{"discovery_source":"search_engine","technical_proficiency":"developer"}}}},"no-survey":{"summary":"User never had a survey (legacy or already completed)","value":{"pending":false}}}}}},"401":{"description":"Unauthorized — user is not authenticated."}}},"post":{"tags":["Users / Me"],"summary":"Submit onboarding survey","description":"Submits the onboarding survey response for the authenticated user. Optionally pins preferred apps for the user in their organization.","security":[{"token":["user:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"survey_type":{"type":"string","description":"The type of survey being submitted (e.g., `self_serve`, `enterprise`)."},"schema_version":{"type":"number","description":"Version of the survey schema. Allows consumers to interpret the answers."},"answers":{"type":"object","description":"The user's answers to the survey questions, keyed by question name.","additionalProperties":true},"preferred_apps":{"type":"array","description":"Optional list of native app package names to pin for the user. Apps that do not exist are reported as failed without blocking the submission.","items":{"type":"string"}}},"required":["survey_type","schema_version","answers"]},"example":{"survey_type":"self_serve","schema_version":1,"answers":{"discovery_source":"search_engine","technical_proficiency":"developer","building_for":"team","org_size":1150,"team_department":"engineering"},"preferred_apps":["slack","gmail"]}}}},"responses":{"200":{"description":"Survey submitted successfully. Side effects (app pinning) are reported individually.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the core survey submission succeeded."},"result":{"type":"object","description":"The SWARM response from HQ confirming the submission.","properties":{"ok":{"type":"number","enum":[1]}}},"pinnedApps":{"type":"array","description":"Result of each app pin attempt. Empty array if no `preferred_apps` were provided.","items":{"type":"object","properties":{"app":{"type":"string","description":"The app package name."},"success":{"type":"boolean","description":"Whether the pin succeeded."},"error":{"type":"string","description":"Error message if the pin failed. Only present when `success` is `false`."}}}}}},"examples":{"success-with-pins":{"summary":"Survey submitted with all apps pinned successfully","value":{"success":true,"result":{"ok":1},"pinnedApps":[{"app":"slack","success":true},{"app":"gmail","success":true}]}},"partial-pin-failure":{"summary":"Survey submitted but one app failed to pin","value":{"success":true,"result":{"ok":1},"pinnedApps":[{"app":"slack","success":true},{"app":"nonexistent-app","success":false,"error":"Native app not found."}]}},"no-preferred-apps":{"summary":"Survey submitted without preferred apps","value":{"success":true,"result":{"ok":1},"pinnedApps":[]}}}}}},"400":{"description":"Validation error — missing required fields (`survey_type`, `schema_version`, or `answers`)."},"401":{"description":"Unauthorized — user is not authenticated."}}}},"/users/me/preferences":{"get":{"x-internal":true,"tags":["Users / Me"],"security":[{"token":["user-preferences:read"]}],"summary":"Get user preferences","description":"Returns the authenticated user's preference tree. The tree is a `{ [namespace]: value }` object\nwhere each top-level key is an independently managed namespace (e.g. `ui`) defined by the\nshared-preferences library. A user who has never written preferences returns an empty tree.\n","responses":{"200":{"description":"The user's current preferences.","content":{"application/json":{"schema":{"type":"object","required":["preferences","updated"],"properties":{"preferences":{"type":"object","additionalProperties":true,"description":"Namespaced preference tree. Keys are namespaces; values are namespace-specific payloads."},"updated":{"type":"string","format":"date-time","nullable":true,"description":"Time of the last write. Null when the user has never written preferences."}}},"examples":{"empty":{"summary":"User has never written preferences","value":{"preferences":{},"updated":null}},"populated":{"summary":"User has the `ui` namespace set","value":{"preferences":{"ui":{"theme":"dark"}},"updated":"2026-07-01T12:34:56.789Z"}}}}}},"401":{"description":"Unauthorized — user is not authenticated."}}},"patch":{"x-internal":true,"tags":["Users / Me"],"security":[{"token":["user-preferences:write"]}],"summary":"Patch user preferences","description":"Applies an RFC 7396 JSON Merge Patch to the authenticated user's preferences. The request body is\na `{ [namespace]: object | null }` envelope: `null` deletes the namespace, an object is merged\nrecursively into the stored namespace payload (`null` on any leaf deletes that leaf; other values\nreplace).\n\nBehaviour by deployment mode:\n- **Private zones**: the merge happens locally against `users.user_preference`.\n- **Public zones**: the envelope is forwarded to HQ via swarm; HQ writes and replicates the row\n  back to the local database.\n\nValidation is two-stage: `validatePreferencePatch` from `@integromat/shared-preferences` checks\nthe envelope shape, namespace key format, and total byte size, then each non-`null` namespace\npatch is validated by its own parser registered by the API layer. Unknown namespaces are rejected.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","minProperties":1,"additionalProperties":{"oneOf":[{"type":"object"},{"type":"null"}]},"description":"`{ [namespace]: value | null }`. Each non-`null` value must match the namespace's schema.\n"},"examples":{"set-ui-theme":{"summary":"Set the UI theme (recursive merge into the `ui` namespace)","value":{"ui":{"theme":"dark"}}},"delete-ui-theme":{"summary":"Delete a single leaf (RFC 7396 null-on-leaf)","value":{"ui":{"theme":null}}},"delete-namespace":{"summary":"Delete a whole namespace","value":{"ui":null}}}}}},"responses":{"200":{"description":"The preferences row after the patch was applied.","content":{"application/json":{"schema":{"type":"object","required":["preferences","updated"],"properties":{"preferences":{"type":"object","additionalProperties":true},"updated":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Invalid envelope shape, unknown namespace, or invalid namespace payload."},"401":{"description":"Unauthorized — user is not authenticated."}}}},"/users/me/organization-invitations":{"get":{"tags":["Users / Me"],"summary":"User Organization invitations","description":"Retrieves organization invitations of the currently authenticated user.","security":[{"token":["user:read"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userOrganizationInvitations":{"type":"array","items":{"type":"object","properties":{"hash":{"type":"string"},"invitation":{"type":"string"},"usersRoleId":{"type":"integer"},"organizationId":{"type":"integer"},"organizationName":{"type":"string"},"zone":{"type":"string"}}}}}},"example":{"userOrganizationInvitations":[{"hash":"e99ca895-4c54-4d13-b83a-8ab37c35f17a","organizationId":10,"organizationName":"Organization 10","usersRoleId":12,"invitation":"pending"},{"hash":"5cd8b8c3-cb5c-4bd8-8d31-4b92fcdc7768","organizationId":13,"organizationName":"Organization 13","usersRoleId":12,"invitation":"expired"}]}}}}}}},"/users/me/api-tokens":{"get":{"tags":["Users / API Tokens"],"summary":"List users API tokens","description":"Gets the API tokens of the currently authenticated user, newest first. The token values are masked except for their first 8 characters. `organizationId` shows the organization a token is scoped to, or `null` for a token that works in every organization of the user. This call is rejected for an API token that is itself scoped to an organization.","security":[{"token":["user:read"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"apiTokens":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string","description":"The API token. Only the response of the create call contains the full value; the list masks everything after the first 8 characters."},"scope":{"type":"array","items":{"type":"string","format":"uri"}},"created":{"type":"string","format":"date-time"},"label":{"type":"string"},"organizationId":{"type":"integer","nullable":true,"minimum":1,"description":"ID of the organization the API token is scoped to. A scoped token works only within that organization: requests that target another organization, or that have no organization context (for example `GET /users/me/api-tokens` or `/admin` routes), are rejected. `null` means the token works in every organization the user belongs to."}}}}}},"examples":{"scoped-and-unscoped":{"summary":"One token scoped to an organization and one unscoped token","value":{"apiTokens":[{"token":"2544847b-****-****-****-************","scope":["apps:write"],"created":"2019-11-05T09:22:31.249Z","label":"token dva write","organizationId":12},{"token":"40aff759-****-****-****-************","scope":["apps:read"],"created":"2019-11-05T09:22:22.615Z","label":"token one read","organizationId":null}]}}}}}},"403":{"description":"The request is authenticated with an API token that is scoped to an organization; such tokens cannot list or create API tokens.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}}},"examples":{"organization-bound-token":{"summary":"Called with an API token scoped to an organization","value":{"message":"Permission denied","code":"SC403","detail":"Organization-bound request can't be used outside of the Organization Context."}}}}}}}},"post":{"tags":["Users / API Tokens"],"summary":"Create new API token","description":"Create a new API token for the currently authenticated user. Specify the API token scopes in the `scope` array parameter. Optionally pass `organizationId` to scope the token to one organization the user is an accepted member of; the token then works only within that organization. Omit `organizationId` or send `null` for a token that works in every organization of the user. A user can have at most 100 API tokens. This call is rejected for an API token that is itself scoped to an organization.","security":[{"token":["user:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"description":"The API token label visible in the Make user profile."},"scope":{"type":"array","minItems":1,"items":{"type":"string","format":"uri"},"description":"The API scopes provided to the API token. The API scopes determine the scope of operations that you can do with the API token.\n\nCheck the list of all existing Make API scopes with the API call `GET /enums/user-api-tokes-scopes`."},"organizationId":{"type":"integer","nullable":true,"minimum":1,"maximum":2147483647,"description":"ID of the organization to scope the API token to. The user must be an accepted member (not just invited) of the organization, and the organization must not be deleted. Omit or send `null` for a token that works in every organization of the user."}},"required":["label","scope"]},"examples":{"unscoped":{"summary":"Token that works in every organization of the user","value":{"label":"example token","scope":["apps:read","apps:write"]}},"scoped":{"summary":"Token scoped to one organization","value":{"label":"example scoped token","scope":["scenarios:read"],"organizationId":12}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"apiToken":{"allOf":[{"type":"object","properties":{"token":{"type":"string","description":"The API token. Only the response of the create call contains the full value; the list masks everything after the first 8 characters."},"scope":{"type":"array","items":{"type":"string","format":"uri"}},"created":{"type":"string","format":"date-time"},"label":{"type":"string"},"organizationId":{"type":"integer","nullable":true,"minimum":1,"description":"ID of the organization the API token is scoped to. A scoped token works only within that organization: requests that target another organization, or that have no organization context (for example `GET /users/me/api-tokens` or `/admin` routes), are rejected. `null` means the token works in every organization the user belongs to."}}},{"type":"object","properties":{"tokenHash":{"type":"string","description":"SHA-256 hash of the token, hex-encoded."},"token_hash":{"type":"string","deprecated":true,"description":"Master (on-premise) only. Same value as `tokenHash`, kept for backward compatibility; use `tokenHash` instead."}}}]}}},"examples":{"unscoped":{"summary":"Token that works in every organization of the user","value":{"apiToken":{"token":"7615989d-d213-48dc-b625-27133ae3f1a8","tokenHash":"5b1a0c4e1d3f0f0e8d6f2a9c7b4e3d2c1a0f9e8d7c6b5a4f3e2d1c0b9a8f7e6d","scope":["apps:read","apps:write"],"created":"2019-11-06T14:37:51.493Z","label":"example token","organizationId":null}}},"scoped":{"summary":"Token scoped to one organization","value":{"apiToken":{"token":"0d3a6c6f-9f4b-4f0e-8a51-2c7b1d4e9a10","tokenHash":"9e2c4b7a1f0d3e6c8b5a2f9e1d4c7b0a3f6e9d2c5b8a1f4e7d0c3b6a9f2e5d8c","scope":["scenarios:read"],"created":"2019-11-06T14:40:12.108Z","label":"example scoped token","organizationId":12}}}}}}},"400":{"description":"Invalid input, for example a missing `label`, an empty `scope`, a non-integer or non-positive `organizationId` (`SC400`), an unknown scope (`IM005`), or the limit of 100 API tokens reached (`IM117`).","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"examples":{"invalid-organization-id":{"summary":"organizationId is not a positive integer","value":{"message":"Bad Request","code":"SC400"}},"token-limit":{"summary":"The user already has 100 API tokens","value":{"message":"You can have at most 100 api tokens.","code":"IM117"}}}}}},"401":{"description":"The token cannot be scoped to the organization: the user is not an accepted member of it, or it does not exist or is deleted.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}}},"examples":{"scoped":{"summary":"The user is not a member of the organization","value":{"message":"Access denied","code":"IM001","detail":"You cannot create a token scoped to this organization."}}}}}},"403":{"description":"The request is authenticated with an API token that is scoped to an organization; such tokens cannot list or create API tokens.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}}},"examples":{"organization-bound-token":{"summary":"Called with an API token scoped to an organization","value":{"message":"Permission denied","code":"SC403","detail":"Organization-bound request can't be used outside of the Organization Context."}}}}}}}}},"/users/me/oauth-connections":{"get":{"tags":["Users / OAuth connections"],"summary":"List OAuth connections","description":"Gets the OAuth connections for the currently authenticated user.","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"connections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"clientName":{"type":"string"},"lastUsedAt":{"type":"string","format":"date-time"},"scopes":{"type":"array","items":{"type":"string"}}}}}}}}}}}}},"/users/me/oauth-connections/{clientId}":{"delete":{"tags":["Users / OAuth connections"],"summary":"Delete OAuth connection","description":"Delete a specific OAuth connection for the currently authenticated user.","parameters":[{"name":"clientId","in":"path","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"client":{"type":"integer"}}}}}}}}},"/users/me/api-tokens/{apiTokenTimestamp}":{"patch":{"tags":["Users / API Tokens"],"summary":"Update API token scopes","description":"Replaces the scopes of the currently authenticated user's API token with the specified creation timestamp. The `scope` array replaces the token's current scopes completely; it is not merged with them. The token value, its `label` and its `organizationId` stay unchanged, and requests authenticated with the token use the new scopes right away. Get the API token creation timestamp with the API call `GET /users/me/api-tokens` in the parameter value `created` and copy it to the API call path. The token is matched with a precision of one second. This call is rejected for an API token that is itself scoped to an organization.","security":[{"token":["user:write"]}],"parameters":[{"name":"apiTokenTimestamp","in":"path","schema":{"type":"string","format":"date-time"},"required":true,"description":"The timestamp of the moment when you created the API token in the ISO 8601 compliant format.","example":"2020-03-27T05:53:27.368Z"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"scope":{"type":"array","minItems":1,"items":{"type":"string"},"description":"The new API scopes of the API token. They replace the current scopes completely. Check the list of all existing Make API scopes with the API call `GET /enums/user-api-token-scopes`."}},"required":["scope"]},"examples":{"read-only":{"summary":"Reduce the token to read-only access to scenarios","value":{"scope":["scenarios:read"]}}}}}},"responses":{"200":{"description":"Successful response with the updated API token. The token value is masked except for its first 8 characters.","content":{"application/json":{"schema":{"type":"object","properties":{"apiToken":{"type":"object","properties":{"token":{"type":"string","description":"The API token. Only the response of the create call contains the full value; the list masks everything after the first 8 characters."},"scope":{"type":"array","items":{"type":"string","format":"uri"}},"created":{"type":"string","format":"date-time"},"label":{"type":"string"},"organizationId":{"type":"integer","nullable":true,"minimum":1,"description":"ID of the organization the API token is scoped to. A scoped token works only within that organization: requests that target another organization, or that have no organization context (for example `GET /users/me/api-tokens` or `/admin` routes), are rejected. `null` means the token works in every organization the user belongs to."}}}}},"examples":{"read-only":{"summary":"The token now has read-only access to scenarios","value":{"apiToken":{"token":"7615989d-****-****-****-************","scope":["scenarios:read"],"created":"2020-03-27T05:53:27.368Z","label":"example token","organizationId":null}}}}}}},"400":{"description":"Invalid input: an empty `scope`, a missing `scope` or any other body property (`SC400`), or an unknown scope or a timestamp that cannot be parsed (`IM005`).","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}}},"examples":{"unknown-scope":{"summary":"One of the scopes does not exist","value":{"message":"Invalid scope list.","code":"IM005"}}}}}},"403":{"description":"The request is authenticated with an API token that is scoped to an organization; such tokens cannot update API tokens.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}}},"examples":{"organization-bound-token":{"summary":"Called with an API token scoped to an organization","value":{"message":"Permission denied","code":"SC403","detail":"Organization-bound request can't be used outside of the Organization Context."}}}}}},"404":{"description":"The currently authenticated user has no API token created at the specified timestamp.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}}},"examples":{"not-found":{"summary":"No API token of the user was created at that time","value":{"message":"Entity not found.","code":"IM013","detail":"API token not found."}}}}}}}},"delete":{"tags":["Users / API Tokens"],"summary":"Delete API token","description":"Deletes currently authenticated user's API token with the specified creation timestamp. Get the API token creation timestamp with the API call `GET /users/me/api-tokens` in the parameter value `created`. Copy the timestamp string to the API call path to delete the API token.","security":[{"token":["user:write"]}],"parameters":[{"name":"apiTokenTimestamp","in":"path","schema":{"type":"string","format":"date-time"},"required":true,"description":"The timestamp of the moment when you created the API key in the ISO 8601 compliant format.","example":"2020-03-27T05:53:27.368Z"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"apiToken":{"type":"string","format":"date-time"}}},"example":{"apiToken":"2020-03-27T05:53:27.368Z"}}}}}}},"/users/{userId}/user-team-roles":{"get":{"tags":["Users / User team roles"],"summary":"List user roles","description":"Gets team roles of the user with the specified `userId`. The response contains user's team role ID for all teams the user is part of. Get the mapping of the `userRoleId` and the user role `name` with the API call `GET /users/roles`.","security":[{"token":["user:read"]}],"parameters":[{"name":"userId","in":"path","schema":{"type":"string"},"required":true,"description":"The ID of the user.","example":111}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userTeamRoles":{"type":"array","items":{"type":"object","properties":{"usersRoleId":{"type":"integer","nullable":true,"description":"The user's role in the team, or `null` when the user has no role (e.g. after removal)."},"userId":{"type":"integer"},"teamId":{"type":"integer"},"changeable":{"type":"boolean"},"ssoPending":{"type":"boolean"}}}}}},"example":{"userTeamRoles":[{"usersRoleId":3,"userId":13,"teamId":1,"changeable":true},{"usersRoleId":1,"userId":13,"teamId":21,"changeable":true}]}}}}}}},"/users/{userId}/user-team-roles/{teamId}":{"get":{"tags":["Users / User team roles"],"summary":"Get user team role detail","description":"Gets user role detail in the team with the specified `teamId`. Get the mapping of the `userRoleId` and the user role `name` with the API call `GET /users/roles`.","security":[{"token":["user:read"]}],"parameters":[{"name":"userId","in":"path","schema":{"type":"string"},"required":true,"description":"The ID of the user.","example":111},{"name":"teamId","in":"path","schema":{"type":"string"},"required":true,"description":"The ID of the team.","example":22}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userTeamRole":{"type":"object","properties":{"usersRoleId":{"type":"integer","nullable":true,"description":"The user's role in the team, or `null` when the user has no role (e.g. after removal)."},"userId":{"type":"integer"},"teamId":{"type":"integer"},"changeable":{"type":"boolean"},"ssoPending":{"type":"boolean"}}}}},"example":{"userTeamRole":{"usersRoleId":3,"userId":13,"teamId":1,"changeable":true}}}}}}},"post":{"tags":["Users / User team roles"],"summary":"Update user role","description":"Updates the user role in the team with the specified `teamId`. Get the mapping of the `userRoleId` and the user role `name` with the API call `GET /users/roles`. Organizations limited to a single team cannot assign team roles; such requests are rejected with `SC402`. Removing a user's role (omitting `usersRoleId` or sending `null`) remains available on those plans.","security":[{"token":["user:write"]}],"parameters":[{"name":"userId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the user.","example":111},{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the team.","example":22}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"usersRoleId":{"type":"integer","nullable":true,"description":"The ID of the user role. Check the `GET /users/roles` API call for the available `usersRoleId` values. Send `null` (or omit) to remove the user's role / remove them from the team."}}},"examples":{"assign":{"summary":"Assign a role","value":{"usersRoleId":3}},"remove":{"summary":"Remove the user's role","value":{"usersRoleId":null}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userTeamRole":{"type":"object","properties":{"usersRoleId":{"type":"integer","nullable":true,"description":"The user's role in the team, or `null` when the user has no role (e.g. after removal)."},"userId":{"type":"integer"},"teamId":{"type":"integer"},"changeable":{"type":"boolean"},"ssoPending":{"type":"boolean"}}}}},"examples":{"assign":{"summary":"Role assigned","value":{"userTeamRole":{"usersRoleId":3,"userId":13,"teamId":1,"changeable":true}}},"remove":{"summary":"Role removed","value":{"userTeamRole":{"usersRoleId":null,"userId":13,"teamId":1,"changeable":true}}}}}}},"402":{"description":"Payment required - the organization is limited to a single team and cannot assign team roles. Upgrade to a multi-team plan.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}}},"examples":{"assign":{"summary":"Blocked assignment on a single-team plan","value":{"message":"Subscription required","code":"SC402","detail":"Customizing team roles is not available on your current plan."}}}}}}}}},"/users/user-team-notifications/{teamId}":{"get":{"tags":["Users / User team notifications"],"summary":"List user team notification settings","description":"Gets the authenticated user's notification settings for a team specified by the `teamId`. Get the mapping of the `notificationId` and the team notification setting type with the API call `GET /enums/user-email-notifications`.\n\nThe response only contains the notification types available to the user. Some notification types require a specific team\npermission — types whose permission the user does not hold are omitted from the response.\n","security":[{"token":["user:read"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"example":3,"description":"The ID of the team."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userTeamNotifications":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"integer"},"teamId":{"type":"integer"},"notificationId":{"type":"integer"},"enabled":{"type":"boolean"}}}}}},"example":{"userTeamNotifications":[{"userId":3,"teamId":3,"notificationId":1,"enabled":true},{"userId":3,"teamId":3,"notificationId":2,"enabled":false},{"userId":3,"teamId":3,"notificationId":6,"enabled":true}]}}}}}}},"/users/user-team-notifications/{teamId}/{notificationId}":{"get":{"tags":["Users / User team notifications"],"summary":"Check user's notification settings","description":"Checks the authenticated user's notification settings for the team and notification type specified by the `teamId` and `notificationId`. Get the mapping of the `notificationId` and the team notification setting type with the API call `GET /enums/user-email-notifications`.\n\nOnly notification types available to the user are returned. Some notification types require a specific team permission —\nfor a type whose permission the user does not hold, the response contains no notification setting.\n","security":[{"token":["user:read"]}],"parameters":[{"name":"teamId","in":"path","schema":{"type":"integer"},"required":true,"example":1,"description":"The ID of the team."},{"name":"notificationId","in":"path","schema":{"type":"integer"},"required":true,"example":6,"description":"The ID of the notification type. Get the mapping of the `notificationId` and the team notification setting type with the API call `GET /enums/user-email-notifications`."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userTeamNotification":{"type":"object","properties":{"userId":{"type":"integer"},"teamId":{"type":"integer"},"notificationId":{"type":"integer"},"enabled":{"type":"boolean"}}}}},"example":{"userTeamNotification":{"userId":1,"teamId":1,"notificationId":6,"enabled":true}}}}}}},"put":{"tags":["Users / User team notifications"],"summary":"Update user's notification settings","description":"Updates the authenticated user's notification settings for the team and notification type specified by the `teamId` and `notificationId`.\n\nGet the mapping of the `notificationId` and the team notification setting type with the API call `GET /enums/user-email-notifications`.\n\nNote that you can only update notification settings for the user associated with the API key used for authentication.\n\nSome notification types require a specific team permission. Enabling such a type for a user who does not hold the required\npermission fails with `403`. Disabling a notification type is always allowed, regardless of permissions or feature flags.\n","security":[{"token":["user:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables or disables team notification type for the user."}}},"example":{"enabled":true}}}},"parameters":[{"name":"teamId","in":"path","schema":{"type":"string"},"required":true,"example":1,"description":"The ID of the team."},{"name":"notificationId","in":"path","schema":{"type":"string"},"required":true,"example":6,"description":"The ID of the notification type. Get the mapping of the `notificationId` and the team notification setting type with the API call `GET /enums/user-email-notifications`."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userTeamNotification":{"type":"object","properties":{"userId":{"type":"integer"},"teamId":{"type":"integer"},"notificationId":{"type":"integer"},"enabled":{"type":"boolean"}}}}},"example":{"userTeamNotification":{"userId":1,"teamId":1,"notificationId":6,"enabled":true}}}}},"403":{"description":"Forbidden - the user lacks the team permission required to enable this notification type","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Insufficient rights","code":"IM002"}}}}}}},"/users/by-permission":{"get":{"tags":["Users"],"summary":"List users by permission","description":"Returns users who have a specific permission within an organization or team.\n\nUse `type: organization` with `organizationId` to find users that hold a given organization-level permission.\nUse `type: company` with `teamId` to find users that hold a given team-level permission.\n\nRequires the `organization users view` permission on the resolved organization.\nWhen `type` is `company`, additionally requires the `team view` permission on the specified team.\n","security":[{"token":["user:read"]}],"parameters":[{"name":"type","in":"query","required":true,"schema":{"type":"string","enum":["organization","company"]},"example":"organization","description":"Whether to filter by an organization-level or team-level (company) permission.\nWhen `organization`, supply `organizationId`.\nWhen `company`, supply `teamId`.\n"},{"name":"permission","in":"query","required":true,"schema":{"type":"string"},"example":"organization users view","description":"The permission string to filter by. Must be a valid permission for the given `type`.\nFor example `organization users view` (organization type) or `team view` (company type).\n"},{"name":"organizationId","in":"query","required":false,"schema":{"type":"integer"},"example":1,"description":"Required when `type` is `organization`. The organization to scope the query to."},{"name":"teamId","in":"query","required":false,"schema":{"type":"integer"},"example":2,"description":"Required when `type` is `company`. The team to scope the query to."},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"default":{"value":["id","name","email"]},"all-cols":{"value":["id","name","email","privateSpaceId","language","timezoneId","localeId","countryId","avatar","lastLogin","invitationStatus"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier of the user.","example":1},"name":{"type":"string","nullable":true,"description":"Full name of the user.","example":"John Doe"},"email":{"type":"string","description":"Email address of the user.","example":"john.doe@example.com"},"privateSpaceId":{"type":"integer","nullable":true,"description":"ID of the user's private space (team) within the organization, if any.","example":42},"language":{"type":"string","description":"Preferred language code of the user.","example":"en"},"timezoneId":{"type":"integer","description":"ID of the user's timezone.","example":1},"localeId":{"type":"integer","description":"ID of the user's locale.","example":1},"countryId":{"type":"integer","description":"ID of the user's country.","example":1},"avatar":{"type":"string","nullable":true,"description":"URL of the user's avatar image.","example":"https://example.com/avatar.png"},"lastLogin":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the user's last login.","example":"2024-01-15T10:30:00.000Z"},"invitationStatus":{"type":"string","nullable":true,"enum":["pending","expired"],"description":"Status of the user's organization invitation.\n`pending` — the user has been invited but has not yet accepted; the invitation is still valid.\n`expired` — the invitation has not been accepted in time.\n`null` — the user is a fully accepted member (no outstanding invitation).\n","example":"pending"}}}}}},"examples":{"organization-type":{"summary":"Users with an organization permission","value":{"users":[{"id":1,"name":"John Doe","email":"john.doe@example.com"}]}},"company-type":{"summary":"Users with a team permission","value":{"users":[{"id":1,"name":"John Doe","email":"john.doe@example.com"},{"id":2,"name":"Jane Smith","email":"jane.smith@example.com"}]}}}}}},"400":{"description":"Bad request — invalid or missing parameters."},"401":{"description":"Unauthorized — authentication is required."},"403":{"description":"Forbidden — the authenticated user does not have the required permissions."}}}},"/users/custom-roles":{"post":{"tags":["Users / Roles"],"summary":"Create a custom role","description":"Creates a new custom organization or team role. Requires the `organization custom roles edit` permission on the organization.","security":[{"token":["user:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","category","organizationId"],"properties":{"name":{"type":"string","minLength":1,"maxLength":50,"description":"The name of the custom role.","example":"Custom Viewer"},"category":{"type":"string","enum":["organization","team"],"description":"Whether the role applies to the organization or a team.","example":"organization"},"organizationId":{"type":"integer","description":"The ID of the organization to create the custom role in.","example":1},"description":{"type":"string","nullable":true,"description":"An optional description of the custom role.","example":"Read-only access to organization resources."},"permissions":{"type":"array","items":{"type":"integer"},"description":"List of permission IDs to assign to the custom role.","example":[101,102]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the custom role.","example":42},"name":{"type":"string","description":"The name of the custom role.","example":"Custom Viewer"},"category":{"type":"string","enum":["organization","team"],"description":"Whether the role applies to the organization or a team.","example":"organization"},"managementType":{"type":"string","enum":["custom_managed"],"description":"The management type of the role. Always `custom_managed` for custom roles.","example":"custom_managed"},"description":{"type":"string","nullable":true,"description":"The description of the custom role.","example":"Read-only access to organization resources."},"permissions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","example":101},"name":{"type":"string","example":"scenarios get"}}},"description":"List of permissions assigned to the custom role."}}}}},"example":{"role":{"id":42,"name":"Custom Viewer","category":"organization","managementType":"custom_managed","description":"Read-only access to organization resources.","permissions":[{"id":101,"name":"scenarios get"},{"id":102,"name":"scenario view"}]}}}}}}}},"/users/custom-roles/{roleId}":{"patch":{"tags":["Users / Roles"],"summary":"Update a custom role","description":"Updates the name, description, or permissions of an existing custom role. Only custom-managed roles can be updated.","security":[{"token":["user:write"]}],"parameters":[{"name":"roleId","in":"path","required":true,"schema":{"type":"integer"},"example":42,"description":"The ID of the custom role to update."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["organizationId"],"properties":{"organizationId":{"type":"integer","description":"The ID of the organization the custom role belongs to.","example":1},"name":{"type":"string","minLength":1,"maxLength":50,"description":"New name for the custom role.","example":"Updated Viewer"},"description":{"type":"string","nullable":true,"description":"New description for the custom role. Pass `null` to clear it.","example":"Updated description."},"permissions":{"type":"array","items":{"type":"integer"},"description":"Full list of permission IDs to assign to the role. Replaces existing permissions.","example":[101]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the custom role.","example":42},"name":{"type":"string","description":"The name of the custom role.","example":"Custom Viewer"},"category":{"type":"string","enum":["organization","team"],"description":"Whether the role applies to the organization or a team.","example":"organization"},"managementType":{"type":"string","enum":["custom_managed"],"description":"The management type of the role. Always `custom_managed` for custom roles.","example":"custom_managed"},"description":{"type":"string","nullable":true,"description":"The description of the custom role.","example":"Read-only access to organization resources."},"permissions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","example":101},"name":{"type":"string","example":"scenarios get"}}},"description":"List of permissions assigned to the custom role."}}}}},"example":{"role":{"id":42,"name":"Updated Viewer","category":"organization","managementType":"custom_managed","description":"Updated description.","permissions":[{"id":101,"name":"scenarios get"}]}}}}}}},"delete":{"tags":["Users / Roles"],"summary":"Delete a custom role","description":"Deletes an existing custom role. Only custom-managed roles can be deleted. The role must not be currently assigned to any users.","security":[{"token":["user:write"]}],"parameters":[{"name":"roleId","in":"path","required":true,"schema":{"type":"integer"},"example":42,"description":"The ID of the custom role to delete."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["organizationId"],"properties":{"organizationId":{"type":"integer","description":"The ID of the organization the custom role belongs to.","example":1}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"roleId":{"type":"integer","description":"The ID of the deleted custom role."}}},"example":{"roleId":42}}}}}}},"/users/roles":{"get":{"tags":["Users / Roles"],"summary":"User role definitions","description":"Gets list of all existing user role names and IDs. Optionally filter by `category`, a specific `roleId`, or pass `organizationId`/`teamId` to include custom roles for that organization. Set the user roles in an organization with the `POST /users/{userId}/user-organization-roles/{organizationId}` API call. Use the `POST /users/{userId}/user-team-roles/{teamId}` API call to set user roles in a team.","security":[{"token":["user:read"]}],"parameters":[{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"all-cols":{"value":["id","name","identifier","subsidiary","category","permissions","description","managementType"]}}},{"name":"category","in":"query","schema":{"type":"string","enum":["organization","team"]},"example":"team","description":"Set this parameter to `organization` or `team` to get user roles in an organization or in a team."},{"name":"organizationId","in":"query","schema":{"type":"integer"},"example":1,"description":"Include custom roles belonging to this organization. Can be combined with `teamId`; if both are provided and the team does not belong to the organization, the request returns `400`. If the organization does not have the `customRoles` license, or the caller lacks permission to view that organization's users, custom roles are silently excluded from the response while the system roles are still returned."},{"name":"teamId","in":"query","schema":{"type":"integer"},"example":1,"description":"Include custom roles belonging to the organization that owns this team. Can be combined with `organizationId`; if both are provided and the team does not belong to the organization, the request returns `400`. If the organization does not have the `customRoles` license, or the caller lacks permission to view that organization's users, custom roles are silently excluded from the response while the system roles are still returned."},{"name":"roleId","in":"query","schema":{"type":"integer"},"example":42,"description":"Filter the response to a single role by its ID."},{"name":"excludeRole[]","in":"query","schema":{"type":"array","items":{"type":"integer"}},"example":[1,3],"description":"Exclude roles with these IDs from the response."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"usersRoles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"identifier":{"type":"string"},"subsidiary":{"type":"boolean"},"category":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"managementType":{"type":"string","enum":["system_locked","admin_managed","custom_managed"],"description":"Indicates how the role is managed.","example":"system_locked"},"description":{"type":"string","nullable":true}}}}}},"examples":{"list":{"summary":"List all user roles","description":"Get all existing user role IDs and the corresponding role names.","value":{"usersRoles":[{"id":1,"name":"Team Admin"},{"id":3,"name":"Team Member"},{"id":4,"name":"Team Monitoring"},{"id":6,"name":"Team Operator"},{"id":11,"name":"Owner"},{"id":12,"name":"Admin"},{"id":13,"name":"Member"},{"id":14,"name":"Accountant"}]}},"all-cols":{"summary":"List all columns","description":"Get all existing user role IDs and the corresponding role names. The response contains all columns available in the endpoint.","value":{"usersRoles":[{"id":1,"name":"Team Admin","identifier":"company:team-admin","subsidiary":true,"category":"team","description":"Team Admin has full access to all data within the team. Only team admins can create custom functions.","permissions":["account add","account delete","account edit","accounts get","datastore add","datastore delete","datastore edit","datastores get","datastore view","device add","device delete","device edit","devices get","dlq edit","dlq view","function add","function delete","function edit","functions get","hook add","hook delete","hook edit","hooks get","key add","key delete","key edit","keys get","scenario add","scenario delete","scenario edit","scenario logs get","scenario notifications","scenario reset counters","scenario scheduling","scenarios get","scenario start","scenario stop","scenario verify","scenario view","storage edit","storage view","team delete","team edit","team user add and edit","team view","template add","template delete","template edit","templates get","template view","udt add","udt delete","udt edit","udts get"]},{"id":3,"name":"Team Member","identifier":"company:team-member","subsidiary":true,"category":"team","description":null,"permissions":["account add","account delete","account edit","accounts get","datastore add","datastore delete","datastore edit","datastores get","datastore view","device add","device delete","device edit","devices get","dlq edit","dlq view","function add","function delete","function edit","functions get","hook add","hook delete","hook edit","hooks get","key add","key delete","key edit","keys get","scenario add","scenario delete","scenario edit","scenario logs get","scenario notifications","scenario reset counters","scenario scheduling","scenarios get","scenario start","scenario stop","scenario verify","scenario view","storage edit","storage view","team edit","team view","template add","template delete","template edit","templates get","template view","udt add","udt delete","udt edit","udts get"]},{"id":4,"name":"Team Monitoring","identifier":"company:team-monitoring","subsidiary":true,"category":"team","description":"Team Monitoring has read-only access to the team, scenarios, and templates.","permissions":["dlq view","scenario logs get","scenario notifications","scenario reset counters","scenarios get","scenario view","team view","templates get","template view"]},{"id":6,"name":"Team Operator","identifier":"company:team-operator","subsidiary":true,"category":"team","description":null,"permissions":["accounts get","datastores get","datastore view","devices get","dlq view","functions get","hooks get","keys get","scenario logs get","scenario notifications","scenario reset counters","scenario scheduling","scenarios get","scenario start","scenario stop","scenario verify","scenario view","storage view","team view","templates get","template view","udts get"]}]}}}}}},"400":{"description":"Bad request. Returned when `organizationId` and `teamId` are both provided and the team does not belong to the specified organization."}}}},"/users/roles/{roleId}":{"get":{"tags":["Users / Roles"],"summary":"Get role detail","description":"Returns the detail of a single role by its ID. For custom-managed roles, requires the `customRoles` license and `ORGANIZATION_USERS_VIEW` permission on the role's organization.","security":[{"token":["user:read"]}],"parameters":[{"name":"roleId","in":"path","required":true,"schema":{"type":"integer"},"example":42,"description":"The ID of the role."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"usersRole":{"type":"object","properties":{"id":{"type":"integer","example":42},"name":{"type":"string","example":"Custom Viewer"},"identifier":{"type":"string","example":"custom_viewer"},"category":{"type":"string","enum":["organization","team"],"example":"organization"},"subsidiary":{"type":"boolean","example":true},"managementType":{"type":"string","enum":["system_locked","admin_managed","custom_managed"],"example":"custom_managed"},"description":{"type":"string","nullable":true,"example":"Read-only access to organization resources."},"organizationId":{"type":"integer","nullable":true,"example":1},"permissions":{"type":"array","items":{"type":"string"},"example":["scenario view","scenario start"]}}}}},"examples":{"custom-role":{"summary":"Custom role","value":{"usersRole":{"id":42,"name":"Custom Viewer","identifier":"custom_viewer","category":"organization","subsidiary":true,"managementType":"custom_managed","description":"Read-only access to organization resources.","organizationId":1,"permissions":["scenario view","scenario start"]}}},"system-role":{"summary":"System role","value":{"usersRole":{"id":1,"name":"Team Admin","identifier":"team_admin","category":"team","subsidiary":false,"managementType":"system_locked","description":null,"organizationId":null,"permissions":[]}}}}}}},"400":{"description":"Not available on self-hosted (private) deployments."},"403":{"description":"Insufficient rights or the organization does not have the `customRoles` license."},"404":{"description":"Role not found."}}}},"/users/roles/permissions":{"get":{"tags":["Users / Roles"],"summary":"User role permission definitions","description":"Gets a list of all available permissions that can be assigned to user roles. Use the `roleCategory` parameter to filter permissions by team or organization roles.","security":[{"token":["user:read"]}],"parameters":[{"name":"roleCategory","in":"query","required":false,"schema":{"type":"string","enum":["team","organization"]},"example":"team","description":"Filter permissions by role category. Use `team` for team role permissions or `organization` for organization role permissions."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"usersRolesPermissions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier of the permission.","example":1},"name":{"type":"string","description":"Name of the permission.","example":"account add"},"note":{"type":"string","description":"Additional note about the permission.","example":""},"category":{"type":"string","description":"Functional category the permission belongs to.","example":"accounts"},"roleCategory":{"type":"string","enum":["team","organization"],"description":"Whether this permission applies to team roles or organization roles.","example":"team"},"label":{"type":"string","description":"A key to the dictionary on imt-web-zone for the permission label.","example":""},"customRolesHidden":{"type":"boolean","description":"If true, the permission is hidden from custom role configuration and cannot be assigned to a custom role.","example":false},"requires":{"type":"array","items":{"type":"integer"},"description":"IDs of the permissions this permission depends on. When this permission is granted to a custom role, every permission listed here must also be granted. An empty array means no dependencies.","example":[]}}}}}},"example":{"usersRolesPermissions":[{"id":1,"name":"account add","note":"","category":"accounts","roleCategory":"team","label":"","customRolesHidden":false,"requires":[]},{"id":2,"name":"account delete","note":"","category":"accounts","roleCategory":"team","label":"","customRolesHidden":false,"requires":[]},{"id":3,"name":"account edit","note":"","category":"accounts","roleCategory":"team","label":"","customRolesHidden":false,"requires":[4]},{"id":4,"name":"accounts get","note":"","category":"accounts","roleCategory":"team","label":"","customRolesHidden":false,"requires":[]}]}}}}}}},"/users/user-organization-roles/{organizationId}/bulk":{"post":{"tags":["Users / User organization roles"],"summary":"Remove multiple users from an organization","x-internal":true,"description":"Removes up to 100 users from an organization in one request. This is the bulk counterpart of `POST /users/{userId}/user-organization-roles/{organizationId}`.\n\nList the target users in the request body `userIds` array (duplicates are ignored). Only removal is supported for now: `usersRoleId` must be `null` or omitted. Bulk role assignment is planned but not yet available — sending a non-null `usersRoleId` is rejected with HTTP 400.\n\nOnly organization owners and admins (permission `organization user add and edit`) can call this endpoint.\n\nThe operation is **all-or-none**: it is applied only when every listed user is eligible. If any user is ineligible, nothing is changed and the call fails with `IM019` (HTTP 400) whose response reports every failing user (`userId`, `name`, error `code` and `message`).\n\nRemoving users that authored connections used by active scenarios, or that own a non-empty private space, needs confirmation. An unconfirmed request that would trigger such side effects fails with `IM004` (HTTP 406) and a payload describing them; re-send with `confirmed=true` (and `deleteConnections` set as desired) to proceed.\n\nAvailable on app zones only.\n","security":[{"token":["user:write"]}],"parameters":[{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"example":11,"description":"The ID of the organization."},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"description":"Set to `true` to confirm a removal whose side effects (deleting connections and/or a non-empty private space) were reported by a prior unconfirmed `IM004` response. Required to complete such a removal.","examples":{"remove-users":{"value":true}}},{"name":"deleteConnections","in":"query","schema":{"type":"boolean"},"description":"When removing users, set to `true` to also delete the connections they authored in the organization, or `false` to keep them. Only meaningful together with `confirmed=true`.","examples":{"remove-users":{"value":true}}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["userIds"],"properties":{"userIds":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"integer","minimum":1},"description":"The IDs of the users whose organization role is changed, or who are removed from the organization. Between 1 and 100 users; duplicates are ignored."},"usersRoleId":{"nullable":true,"enum":[null],"description":"Removal-only for now, so this must be `null` or omitted — the listed users are removed from the organization. Bulk role assignment is not yet supported; a non-null value is rejected with HTTP 400."}}},"examples":{"remove-users":{"summary":"Remove several users from the organization","description":"Omit usersRoleId (or send null) to remove the listed users from the organization.","value":{"userIds":[254,255,256]}}}}}},"responses":{"200":{"description":"The role change (or removal) was applied to every listed user.","content":{"application/json":{"schema":{"type":"object","properties":{"userOrganizationRole":{"type":"object","properties":{"organizationId":{"type":"integer","description":"The ID of the organization."},"usersRoleId":{"nullable":true,"enum":[null],"description":"Always `null` — the listed users were removed from the organization. (Reserved for a future bulk role-assignment feature.)"},"userIds":{"type":"array","items":{"type":"integer"},"description":"The IDs of the users that were changed or removed."}}}}},"examples":{"remove-users":{"summary":"Users removed","value":{"userOrganizationRole":{"organizationId":11,"usersRoleId":null,"userIds":[254,255,256]}}}}}}},"400":{"description":"Invalid input (for example `userIds` empty or longer than 100, or a non-null `usersRoleId`), or — with code `IM019` — the batch was rejected because at least one listed user is ineligible. The `IM019` response lists every failing user; no user was changed.\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Some users could not be updated.","code":"IM019"}}}},"403":{"description":"The caller lacks the `organization user add and edit` permission on the organization.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Insufficient rights.","code":"IM002"}}}},"406":{"description":"Confirmation required (`IM004`). Removing at least one listed user has side effects — deleting connections used by active scenarios and/or a non-empty private space. Re-send the request with `confirmed=true` to proceed.\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Confirmation required.","code":"IM004"}}}}}}},"/users/{userId}/user-organization-roles":{"get":{"tags":["Users / User organization roles"],"summary":"List user roles in an organization","description":"Gets list of all users and their roles in the organization with the specified `organizationId`. Get all user role IDs with the API call `GET /users/roles`.","security":[{"token":["user:read"]}],"parameters":[{"name":"userId","in":"path","schema":{"type":"string"},"required":true,"description":"The ID of the user.","example":111},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"all-cols":{"value":["userId","organizationId","usersRoleId","invitation","organizationTeamsCount","joinedTeamsCount"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userOrganizationRoles":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"string"}}}}}},"examples":{"default-cols":{"summary":"Get user roles","description":"List all users in the organization and their organization roles.","value":{"userOrganizationRoles":[{"userId":1,"organizationId":1,"usersRoleId":11,"invitation":null},{"userId":1,"organizationId":2,"usersRoleId":11,"invitation":null}]}},"all-cols":{"summary":"Get all columns","description":"List all users in the organization and their organization roles. The example response contains all available columns.","value":{"userOrganizationRoles":[{"userId":1,"organizationId":1,"usersRoleId":11,"invitation":null,"organizationTeamsCount":8,"joinedTeamsCount":7},{"userId":1,"organizationId":2,"usersRoleId":11,"invitation":null,"organizationTeamsCount":2,"joinedTeamsCount":2}]}}}}}}}}},"/users/{userId}/user-organization-roles/{organizationId}":{"get":{"tags":["Users / User organization roles"],"summary":"Get user organization role details","description":"Gets information about user role in an organization with the specified `userId` and `organizationId`. Get all user role IDs with the API call `GET /users/roles`.","security":[{"token":["user:read"]}],"parameters":[{"name":"userId","in":"path","schema":{"type":"string"},"required":true,"example":254,"description":"The ID of the user"},{"name":"organizationId","in":"path","schema":{"type":"string"},"required":true,"example":11,"description":"The ID of the organization"},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"all-cols":{"value":["userId","organizationId","userRoleId","invitation","organizationTeamsCount","joinedTeamsCount"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userOrganizationRole":{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"string"},"organizationTeamsCount":{"type":"integer"},"joinedTeamsCount":{"type":"integer"}}}}},"examples":{"default-cols":{"summary":"Get user role detail","description":"Get the user role in the organization.","value":{"userOrganizationRole":{"userId":254,"organizationId":11,"usersRoleId":11,"invitation":null}}},"all-cols":{"summary":"Get all columns","description":"Get all available columns of the user role in the organization.","value":{"userOrganizationRole":{"userId":254,"organizationId":11,"usersRoleId":11,"invitation":null,"organizationTeamsCount":2,"joinedTeamsCount":2}}}}}}}}},"post":{"tags":["Users / User organization roles"],"summary":"Update user role","description":"Updates the specified user role in the organization. Only organization owners and admins can change the user organization roles. Refer to the Make Help center for a breakdown of the user [role permissions](https://www.make.com/en/help/access-management/organizations#organization-roles).\n\nSpecify the ID of the new role for the user in the request body. Get all available user role IDs and the corresponding user role names with the API call `GET /users/roles`.\n\nYou cannot change the organization \"Owner\" with this endpoint. Use the API call to [transfer organization ownership](./post--users--userid--user-organization-roles--organizationid--transfer.md) instead.\n\nIf you send an empty request body, the user with the specified `userId` will be removed from the organization.\n","security":[{"token":["user:write"]}],"parameters":[{"name":"userId","in":"path","schema":{"type":"integer"},"required":true,"example":5,"description":"The ID of the user."},{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"example":22,"description":"The ID of the organization."},{"name":"cols","in":"query","schema":{"type":"array","items":{"type":"string"}},"description":"Specifies columns that are returned in the response. Use the `cols[]` parameter for every column that you want to return in the response. For example `GET /endpoint?cols[]=key1&cols[]=key2` to get both `key1` and `key2` columns in the response.\n\n[Check the \"Filtering\" section for a full example.](/api-documentation/pagination-sorting-filtering/filtering)\n","examples":{"all-cols":{"value":["userId","organizationId","usersRoleId","invitation","organizationTeamsCount","joinedTeamsCount"]}}},{"name":"confirmed","in":"query","schema":{"type":"boolean"},"examples":{"remove-user":{"value":true}},"description":"Use this parameter when you are removing a user from an organization. Set this parameter to `true` is you want to delete the user's connections from the organization with the parameter `deleteConnections`."},{"name":"deleteConnections","in":"query","schema":{"type":"boolean"},"examples":{"remove-user":{"value":true}},"description":"Set this parameter to `true` if you are removing a user from an organization to delete also the user's connections. If you set this parameter to `false`, the API call won't delete the user's connections."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"usersRoleId":{"type":"integer","description":"The ID of the user role. Check the `GET /users/roles` API call for the available `usersRoleId` values."}}},"examples":{"set-user-role":{"summary":"Set user role","description":"Set the user role in the organization. Get all user role IDs with the API call `GET /users/roles`.","value":{"usersRoleId":12}},"all-cols":{"summary":"Set user data all cols","description":"Set user role in the organization. The response returns all available columns for the user role in the organization.","value":{"usersRoleId":12}},"remove-user":{"summary":"Remove user from organization","description":"To remove a user from the organization send empty request body.","value":""}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userOrganizationRole":{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"string"}}}}},"examples":{"set-user-role":{"value":{"userOrganizationRole":{"userId":5,"organizationId":22,"usersRoleId":12,"invitation":null}}},"all-cols":{"value":{"userOrganizationRole":{"userId":5,"organizationId":22,"usersRoleId":12,"invitation":null,"organizationTeamsCount":2,"joinedTeamsCount":2}}},"remove-user":{"value":{"userOrganizationRole":{"userId":5,"organizationId":22,"usersRoleId":null,"invitation":null}}}}}}}}}},"/users/{userId}/user-organization-roles/{organizationId}/transfer":{"post":{"tags":["Users / User organization roles"],"summary":"Transfer organization ownership","description":"Transfer organization ownership to the user with the specified `userId`. Only organization owner can transfer their ownership to another user.","security":[{"token":["user:write"]}],"parameters":[{"name":"userId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the user.","example":111},{"name":"organizationId","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the organization.","example":11}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userOrganizationRoles":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"integer"},"organizationId":{"type":"integer"},"usersRoleId":{"type":"integer"},"invitation":{"type":"boolean"}}}}}},"example":{"userOrganizationRoles":[{"userId":111,"organizationId":11,"usersRoleId":11,"invitation":null},{"userId":1,"organizationId":11,"usersRoleId":12,"invitation":null}]}}}}}}},"/users/unread-notifications":{"get":{"tags":["Users / Unread notifications"],"summary":"Unread notifications","description":"Gets the number of unread notifications for the currently authenticated user.","security":[{"token":["user:read"]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userUnreadNotifications":{"type":"integer"},"userZoneUnreadNotifications":{"type":"array","items":{"type":"object","properties":{"zoneId":{"type":"integer"},"unreadNotifications":{"type":"integer"}}}}}},"example":{"userUnreadNotifications":2}}}}}}},"/users/redirect-action":{"get":{"tags":["Users"],"summary":"Get user redirect action","x-internal":true,"parameters":[{"name":"orgId","in":"query","schema":{"type":"integer"},"example":1}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"redirect":{"type":"string"},"redirectAction":{"type":"object","properties":{"action":{"type":"string"},"data":{"type":"object"}}}},"example":{"redirect":"/5/scenarios/add`","redirectAction":{"action":"CREATE_SCENARIO","data":{"modules":["weather:now","google:sheet"]}}}}}}}}}},"/users/set-ui-settings":{"post":{"tags":["Users"],"summary":"Updates the UI settings of the user.","x-internal":true,"description":"Updates the UI settings of the user.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"uiSettings":{"description":"The diff of the new UI settings.","type":"object"}},"required":["uiSettings"]},"example":{"uiSettings":{"showDialog":false}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"integer"}}},"example":{"ok":1}}}}}}},"/mailhub/users/{userId}/preferences":{"get":{"tags":["Users / User email preferences - Mailhub"],"summary":"Get preferences","parameters":[{"name":"userId","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"preferences":{"type":"object","properties":{"id":{"type":"integer"},"uuid":{"type":"string"},"email":{"type":"string","format":"email"},"is_email_verified":{"type":"boolean"},"global":{"type":"object","properties":{"isEmailVerified":{"type":"boolean"},"preferences":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean"},"label":{"type":"string"},"description":{"type":"string"}}}}}},"zones":{"type":"array","items":{}}}}}},"examples":{"get-preferences":{"summary":"Get preferences","value":{"preferences":{"id":1,"uuid":"e39de7bc-95b0-443c-83e9-ac397ea8f004","email":"admin@make.cloud","is_email_verified":true,"global":{"isEmailVerified":true,"preferences":[{"id":"use_cases","enabled":false,"label":"Use Cases","description":"Get new Make use cases delivered to your inbox."},{"id":"product_updates","enabled":false,"label":"Product Updates","description":"Product and feature updates including new releases and important changes."},{"id":"app_updates","enabled":false,"label":"App Updates","description":"Get notified about new apps and services as they become available, as well as changes in the existing apps."},{"id":"events_and_webinars","enabled":false,"label":"Events and Webinars","description":"Get notified about Make events and webinars including demos, discussions and community events."},{"id":"promotions","enabled":false,"label":"Offers and Promotions","description":"Latest promotions and discounts delivered to your inbox."},{"id":"channel_partner_updates","enabled":false,"label":"Partnerships","description":"Emails with exclusive information for Make partners such as partner updates and resources."},{"id":"academy","enabled":false,"label":"Academy","description":"Receive the latest content from Make Academy including videos, tutorials and educational events."},{"id":"blog","enabled":false,"label":"Blog and Newsletter","description":"Get the latest advice, resources and updates on all things Make and no-code automation."}]},"zones":[]}}}}}}}}},"patch":{"tags":["Users / User email preferences - Mailhub"],"summary":"Update global preferences","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean"}}},"example":{"id":"use_cases","enabled":true}}}},"parameters":[{"name":"userId","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"preferences":{"type":"object","properties":{"global":{"type":"object","properties":{"preferences":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean"}}}}}}}}},"examples":{"update-global-preferences":{"summary":"Update global preferences","value":{"preferences":{"global":{"preferences":{"id":"use_cases","enabled":true}}}}}}}}}}}},"/mailhub/users/{userId}/organizations/{organizationId}/teams/{teamId}/preferences":{"get":{"tags":["Users / User email preferences - Mailhub"],"summary":"Get team preferences","parameters":[{"name":"userId","in":"path","schema":{"type":"string"},"required":true},{"name":"organizationId","in":"path","schema":{"type":"string"},"required":true},{"name":"teamId","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"uuid":{"type":"string"},"email":{"type":"string","format":"email"},"is_email_verified":{"type":"boolean"},"team":{"type":"object","properties":{"teamId":{"type":"integer"},"teamName":{"type":"string"},"preferences":{"type":"object","properties":{"native":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"subscribed":{"type":"boolean"},"label":{"type":"string"},"description":{"type":"string"}}}},"marketing":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean"},"label":{"type":"string"},"description":{"type":"string"}}}}}}}}}},"examples":{"get-team-preferences":{"summary":"Get team preferences","value":{"id":3,"uuid":"4c090605-19a1-46b9-a3f3-a2cb83e8adc1","email":"petr.malimanek@make.com","is_email_verified":true,"team":{"teamId":10,"teamName":"My Team","preferences":{"native":[{"id":6,"subscribed":true,"label":"Deactivation","description":"Get notified when your scenario gets deactivated due to critical issues such as multiple consecutive errors."},{"id":2,"subscribed":false,"label":"Warnings","description":"Warnings encountered by your scenarios that need your attention, such as failure to connect with your apps and services."},{"id":1,"subscribed":true,"label":"Errors","description":"Notifications about errors encountered by specific modules in your scenarios that keep your workflows from running smoothly."}],"marketing":[{"id":"onboarding","enabled":false,"label":"Tips For Success","description":"Organization-specific emails to help you succeed with Make and make the most of your subscription."}]}}}}}}}}}},"patch":{"tags":["Users / User email preferences - Mailhub"],"summary":"Update team preferences","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean"}}},"example":{"id":"onboarding","enabled":true}}}},"parameters":[{"name":"userId","in":"path","schema":{"type":"string"},"required":true},{"name":"organizationId","in":"path","schema":{"type":"string"},"required":true},{"name":"teamId","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"team":{"type":"object","properties":{"preferences":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean"}}}}}}},"examples":{"update-team-preferences":{"summary":"Update team preferences","value":{"team":{"preferences":{"id":"onboarding","enabled":false}}}}}}}}}}},"/mailhub/users/{userId}/organizations/{organizationId}/teams/{teamId}/native-preferences":{"patch":{"tags":["Users / User email preferences - Mailhub"],"summary":"Update team native preferences","description":"Updates a native email notification preference of a team for the user associated with the API key used for authentication.\n\nSome notification types require a specific team permission. Enabling such a type for a user who does not hold the required permission fails with `403`. Disabling a notification type is always allowed, regardless of permissions or feature flags.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"utc-millisec"},"enabled":{"type":"boolean"}}},"example":{"id":"1","enabled":true}}}},"parameters":[{"name":"userId","in":"path","schema":{"type":"string"},"required":true},{"name":"organizationId","in":"path","schema":{"type":"string"},"required":true},{"name":"teamId","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"team":{"type":"object","properties":{"preferences":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean"}}}}}}},"examples":{"update-team-native-preferences":{"summary":"Update team native preferences","value":{"team":{"preferences":{"id":"onboarding","enabled":false}}}}}}}},"400":{"description":"Bad request - the request is invalid, the notification type is not available, or Mailhub rejected the preference. Errors raised by Mailhub keep their original code.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"}}},"example":{"message":"Bad Request","code":"SC400","detail":"Validation failed for 1 parameter(s)."}}}},"403":{"description":"Forbidden - the user lacks the team permission required to enable this notification type","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Insufficient rights","code":"IM002"}}}},"502":{"description":"Bad gateway - Mailhub failed with an unrecognized error","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}}},"example":{"message":"Bad Gateway","code":"SC502"}}}}}}},"/debug/hq/zone":{"get":{"tags":["Debug"],"description":"Get config of current zone","x-internal":true,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"number","description":"Number 3 means ready"}}},"example":{"state":3}}}}}}},"/hq/sanity-check":{"get":{"tags":["HQ"],"description":"Get sanity check","x-internal":true,"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"userSessionExpiresAt":{"type":"string","format":"date-time","description":"When user session will expire at"},"authUser":{"type":"object","properties":{"id":{"type":"number","description":"User id"}}}}}}}}}}},"/consumptions/reports/{organizationId}/{teamId}?":{"get":{"tags":["Consumption"],"x-internal":true,"summary":"Get consumption list","description":"List consumption reports for specified time range and organization. Endpoint is proxy for the Pacman API. Documentation is available at https://github.com/integromat/make-pacman/blob/master/openapi/openapi.json","security":[{"token":["organization:view"]}],"responses":null}},"/consumptions/reports/totals/{organizationId}/{teamId}?":{"get":{"tags":["Consumption"],"x-internal":true,"summary":"Get consumption totals","description":"Returns aggregated consumption totals per source type for the requested period, scoped to an organization or a single team within it. Endpoint is proxy for the Pacman API. Documentation is available at https://github.com/integromat/make-pacman/blob/master/openapi/openapi.json\n","security":[{"token":["pacman:use"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The unique ID of the organization to report on.","example":12345},{"name":"teamId","in":"path","required":false,"schema":{"type":"integer","minimum":1},"description":"The unique ID of the team within the organization to scope the totals to. When omitted, totals cover the whole organization.","example":123},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["scenario","ai-agent","maia","function"]},"description":"Source type to filter totals by. When omitted, totals for all source types are returned.","example":"scenario"},{"name":"period","in":"query","required":false,"schema":{"type":"string","enum":["30days","7days","24hours"],"default":"30days"},"description":"Period of time to report on.","example":"30days"}],"responses":{"200":{"description":"Consumption totals for the requested organization or team and period.","content":{"application/json":{"schema":{"type":"object","required":["totals","period"],"properties":{"totals":{"type":"array","items":{"type":"object","required":["type","centicredits","operations","transfer"],"properties":{"type":{"type":"string","example":"scenario"},"centicredits":{"type":"string","format":"int64","description":"Total centicredits consumed in the period.","example":"123456789"},"operations":{"type":"string","format":"int64","description":"Total operations consumed in the period.","example":"123456"},"transfer":{"type":"string","format":"int64","description":"Total data transfer consumed in the period, in bytes.","example":"456"}}}},"period":{"type":"object","required":["from","to"],"properties":{"from":{"type":"string","format":"date-time","description":"Start of the reported period.","example":"2025-09-25T12:00:00.000Z"},"to":{"type":"string","format":"date-time","description":"When the totals were generated. The current hour may still be growing.","example":"2025-10-25T12:34:56.789Z"}}}}},"examples":{"scenario-30days":{"value":{"totals":[{"type":"scenario","centicredits":"123456789","operations":"123456","transfer":"456"}],"period":{"from":"2025-09-25T12:00:00.000Z","to":"2025-10-25T12:34:56.789Z"}}}}}}},"403":{"description":"Caller lacks the required scope/permission on the organization."}}}},"/outbound-webhooks/organizations/{organizationId}/webhooks":{"get":{"x-internal":true,"tags":["Outbound Webhooks"],"summary":"List outbound webhooks for an organization","description":"Returns the outbound webhook subscriptions belonging to the given organization. Endpoint is proxy for the Outbound Webhooks service. Full schema documentation is available at https://github.com/integromat/outbound-webhooks/blob/master/openapi/openapi.json","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The unique ID of the organization that owns the webhooks."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"description":"Maximum number of webhooks to return."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Number of webhooks to skip for pagination."}],"responses":{"200":{"description":"Successful response."},"400":{"description":"Invalid query parameters."},"403":{"description":"Caller lacks permission on the organization."},"500":{"description":"Downstream error."}}},"post":{"x-internal":true,"tags":["Outbound Webhooks"],"summary":"Create an outbound webhook","description":"Registers a new outbound webhook subscription for the organization. The response includes a one-time `signingSecret` that is not retrievable later. Endpoint is proxy for the Outbound Webhooks service. Full schema documentation is available at https://github.com/integromat/outbound-webhooks/blob/master/openapi/openapi.json","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The unique ID of the organization that will own the webhook."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","url"],"properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name of the webhook."},"url":{"type":"string","format":"uri","description":"HTTPS URL that will receive webhook deliveries."}}}}}},"responses":{"201":{"description":"Webhook created."},"400":{"description":"Invalid request body (for example, a non-HTTPS URL)."},"403":{"description":"Caller lacks permission on the organization."},"500":{"description":"Downstream error."}}}},"/outbound-webhooks/organizations/{organizationId}/webhooks/{webhookId}":{"get":{"x-internal":true,"tags":["Outbound Webhooks"],"summary":"Get an outbound webhook","description":"Returns a single outbound webhook subscription belonging to the given organization. The `signingSecret` is not included in this response — it is only returned at creation time. Endpoint is proxy for the Outbound Webhooks service. Full schema documentation is available at https://github.com/integromat/outbound-webhooks/blob/master/openapi/openapi.json","security":[{"token":["organizations:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The unique ID of the organization that owns the webhook."},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The unique ID of the webhook."}],"responses":{"200":{"description":"Successful response."},"403":{"description":"Caller lacks permission on the organization."},"404":{"description":"Webhook not found."},"500":{"description":"Downstream error."}}},"patch":{"x-internal":true,"tags":["Outbound Webhooks"],"summary":"Update an outbound webhook","description":"Updates a mutable field on an outbound webhook subscription. Only the fields provided in the request body are changed. Endpoint is proxy for the Outbound Webhooks service. Full schema documentation is available at https://github.com/integromat/outbound-webhooks/blob/master/openapi/openapi.json","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The unique ID of the organization that owns the webhook."},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The unique ID of the webhook."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","minProperties":1,"properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name of the webhook."},"url":{"type":"string","format":"uri","description":"HTTPS URL that will receive webhook deliveries."}}}}}},"responses":{"200":{"description":"Webhook updated."},"400":{"description":"Invalid request body."},"403":{"description":"Caller lacks permission on the organization."},"404":{"description":"Webhook not found."},"500":{"description":"Downstream error."}}},"delete":{"x-internal":true,"tags":["Outbound Webhooks"],"summary":"Delete an outbound webhook","description":"Permanently removes an outbound webhook subscription. The webhook stops receiving deliveries immediately. Endpoint is proxy for the Outbound Webhooks service. Full schema documentation is available at https://github.com/integromat/outbound-webhooks/blob/master/openapi/openapi.json","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The unique ID of the organization that owns the webhook."},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The unique ID of the webhook."}],"responses":{"204":{"description":"Webhook deleted."},"403":{"description":"Caller lacks permission on the organization."},"404":{"description":"Webhook not found."},"500":{"description":"Downstream error."}}}},"/outbound-webhooks/organizations/{organizationId}/webhooks/{webhookId}/activate":{"patch":{"x-internal":true,"tags":["Outbound Webhooks"],"summary":"Activate an outbound webhook","description":"Activates a previously paused outbound webhook subscription. The webhook's `status` becomes `live` on success. Endpoint is proxy for the Outbound Webhooks service. Full schema documentation is available at https://github.com/integromat/outbound-webhooks/blob/master/openapi/openapi.json","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The unique ID of the organization that owns the webhook."},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The unique ID of the webhook."}],"responses":{"200":{"description":"Webhook activated."},"403":{"description":"Caller lacks permission on the organization."},"404":{"description":"Webhook not found."},"422":{"description":"Webhook is not linked to a delivery provider."},"503":{"description":"Provider sync error."}}}},"/outbound-webhooks/organizations/{organizationId}/webhooks/{webhookId}/deactivate":{"patch":{"x-internal":true,"tags":["Outbound Webhooks"],"summary":"Deactivate an outbound webhook","description":"Pauses an outbound webhook subscription. The webhook's `status` becomes `paused` on success and deliveries stop until the webhook is activated again. Endpoint is proxy for the Outbound Webhooks service. Full schema documentation is available at https://github.com/integromat/outbound-webhooks/blob/master/openapi/openapi.json","security":[{"token":["organizations:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"The unique ID of the organization that owns the webhook."},{"name":"webhookId","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The unique ID of the webhook."}],"responses":{"200":{"description":"Webhook deactivated."},"403":{"description":"Caller lacks permission on the organization."},"404":{"description":"Webhook not found."},"422":{"description":"Webhook is not linked to a delivery provider."},"503":{"description":"Provider sync error."}}}},"/event-subscriptions/v1/organizations/{organizationId}/event-types":{"get":{"x-internal":true,"operationId":"listEventSubscriptionEventTypes","tags":["Event subscriptions"],"summary":"List event types","description":"Lists the event types a subscription can receive, with the JSON Schema of each payload version. Use the `type` values in a subscription's `events.types`.\n\nRequires the `event-subscriptions:read` scope.\n","security":[{"token":["event-subscriptions:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The ID of the organization that owns the event subscriptions.","schema":{"type":"integer","minimum":1},"example":11}],"responses":{"200":{"description":"The event types available to subscriptions.","content":{"application/json":{"schema":{"type":"object","required":["eventTypes"],"properties":{"eventTypes":{"type":"array","items":{"type":"object","required":["type","supportsTeamSelection","defaultPayloadVersion","payloads"],"properties":{"type":{"type":"string"},"supportsTeamSelection":{"type":"boolean","description":"If `true`, a subscription's `teams` selection filters this event type."},"defaultPayloadVersion":{"type":"integer","minimum":1,"description":"The version new subscriptions receive. Existing subscriptions keep their version."},"payloads":{"type":"array","items":{"type":"object","required":["version","schema"],"properties":{"version":{"type":"integer","minimum":1},"schema":{"type":"object","additionalProperties":true,"description":"JSON Schema of the event's `data` at this payload version."}}}}}}}}},"examples":{"default":{"summary":"One event type with its payload schema","value":{"eventTypes":[{"type":"scenario.created","supportsTeamSelection":true,"defaultPayloadVersion":1,"payloads":[{"version":1,"schema":{"type":"object","required":["scenario_id","user_id","team_id","organization_id"],"properties":{"scenario_id":{"type":"integer"},"user_id":{"type":"integer"},"team_id":{"type":"integer"},"organization_id":{"type":"integer"}}}}]}]}}}}}},"400":{"description":"A parameter or the request body is invalid (`VALIDATION_FAILED` or `INVALID_URL`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"invalidUrl":{"summary":"The URL contains credentials","value":{"code":"INVALID_URL","message":"Invalid URL","detail":"The URL must not contain credentials."}}}}}},"401":{"description":"Authentication failed, the token lacks the required scope, or an organization-bound token was used for another organization (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: event-subscriptions:read"}}}}}},"403":{"description":"The user lacks the Event subscriptions permission this action needs in the organization (`FORBIDDEN`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"permissionDenied":{"summary":"Missing permission","value":{"code":"FORBIDDEN","message":"Forbidden","detail":"You do not have permission to perform this action."}}}}}},"500":{"description":"An unexpected error occurred (`INTERNAL_ERROR`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"internalError":{"summary":"Unexpected error","value":{"code":"INTERNAL_ERROR","message":"Internal error","detail":"An unexpected error occurred."}}}}}},"503":{"description":"A required service is temporarily unavailable (`SERVICE_UNAVAILABLE`). Retry the request.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"serviceUnavailable":{"summary":"Temporarily unavailable","value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable","detail":"A required service is temporarily unavailable. Retry the request."}}}}}}}}},"/event-subscriptions/v1/organizations/{organizationId}/subscriptions":{"get":{"x-internal":true,"operationId":"listEventSubscriptions","tags":["Event subscriptions"],"summary":"List event subscriptions","description":"Lists the event subscriptions of the organization. Unknown query parameters are rejected with `400`.\n\nRequires the `event-subscriptions:read` scope.\n","security":[{"token":["event-subscriptions:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The ID of the organization that owns the event subscriptions.","schema":{"type":"integer","minimum":1},"example":11},{"name":"pg[limit]","in":"query","description":"The maximum number of subscriptions to return.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"example":20},{"name":"pg[offset]","in":"query","description":"The number of subscriptions to skip.","schema":{"type":"integer","minimum":0,"default":0},"example":0},{"name":"pg[sortBy]","in":"query","description":"The field to sort subscriptions by.","schema":{"type":"string","enum":["createdAt","name"],"default":"createdAt"},"example":"createdAt"},{"name":"pg[sortDir]","in":"query","description":"The sort direction.","schema":{"type":"string","enum":["asc","desc"],"default":"desc"},"example":"desc"},{"name":"pg[returnTotalCount]","in":"query","description":"If `true`, the response includes `pg.totalCount`, the number of subscriptions that match the filter.","schema":{"type":"boolean","default":false},"example":true},{"name":"status","in":"query","description":"Return only subscriptions in this state.","schema":{"type":"string","enum":["active","inactive","suspended"],"description":"`active` receives events, `inactive` was disabled, and `suspended` stopped sending after repeated failed deliveries until it is enabled again."},"example":"active"}],"responses":{"200":{"description":"A page of the organization's event subscriptions.","content":{"application/json":{"schema":{"type":"object","required":["subscriptions","pg"],"properties":{"subscriptions":{"type":"array","items":{"type":"object","required":["id","organizationId","name","url","status","events","teams","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"integer"},"name":{"type":"string"},"url":{"type":"string"},"status":{"type":"object","required":["state","reason"],"properties":{"state":{"type":"string","enum":["active","inactive","suspended"],"description":"`active` receives events, `inactive` was disabled, and `suspended` stopped sending after repeated failed deliveries until it is enabled again."},"reason":{"type":"string","nullable":true,"description":"Why the subscription is `suspended`, and `null` for other states. New reasons may be added, so accept unknown values.","example":"repeated_failures"}}},"events":{"type":"object","required":["mode","payloadVersions"],"properties":{"mode":{"type":"string","enum":["all","selected"]},"types":{"type":"array","description":"Present when `mode` is `selected`.","items":{"type":"string"}},"payloadVersions":{"type":"object","description":"The payload version this subscription receives for each subscribed event type. Read-only.","additionalProperties":{"type":"integer","minimum":1}}}},"teams":{"type":"object","required":["mode"],"properties":{"mode":{"type":"string","enum":["all","selected"]},"ids":{"type":"array","description":"Present when `mode` is `selected`.","items":{"type":"integer"}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}},"pg":{"type":"object","required":["limit","offset","sortBy","sortDir"],"properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"sortBy":{"type":"string","enum":["createdAt","name"]},"sortDir":{"type":"string","enum":["asc","desc"]},"totalCount":{"type":"integer","description":"Present when `pg[returnTotalCount]` is `true`."}}}}},"examples":{"default":{"summary":"One page of subscriptions with the total count","value":{"subscriptions":[{"id":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12","organizationId":11,"name":"Scenario changes","url":"https://example.com/make-events","status":{"state":"active","reason":null},"events":{"mode":"selected","types":["scenario.created","scenario.deleted"],"payloadVersions":{"scenario.created":1,"scenario.deleted":1}},"teams":{"mode":"selected","ids":[212]},"createdAt":"2026-10-21T09:30:00.000Z","updatedAt":"2026-10-21T09:30:00.000Z"}],"pg":{"limit":20,"offset":0,"sortBy":"createdAt","sortDir":"desc","totalCount":1}}}}}}},"400":{"description":"A parameter or the request body is invalid (`VALIDATION_FAILED` or `INVALID_URL`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"invalidUrl":{"summary":"The URL contains credentials","value":{"code":"INVALID_URL","message":"Invalid URL","detail":"The URL must not contain credentials."}}}}}},"401":{"description":"Authentication failed, the token lacks the required scope, or an organization-bound token was used for another organization (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: event-subscriptions:read"}}}}}},"403":{"description":"The user lacks the Event subscriptions permission this action needs in the organization (`FORBIDDEN`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"permissionDenied":{"summary":"Missing permission","value":{"code":"FORBIDDEN","message":"Forbidden","detail":"You do not have permission to perform this action."}}}}}},"500":{"description":"An unexpected error occurred (`INTERNAL_ERROR`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"internalError":{"summary":"Unexpected error","value":{"code":"INTERNAL_ERROR","message":"Internal error","detail":"An unexpected error occurred."}}}}}},"503":{"description":"A required service is temporarily unavailable (`SERVICE_UNAVAILABLE`). Retry the request.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"serviceUnavailable":{"summary":"Temporarily unavailable","value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable","detail":"A required service is temporarily unavailable. Retry the request."}}}}}}}},"post":{"x-internal":true,"operationId":"createEventSubscription","tags":["Event subscriptions"],"summary":"Create an event subscription","description":"Creates an event subscription that sends the selected events to `url`.\n\nThe response contains the `signingSecret` used to sign every delivery. Store it to verify that deliveries come from Make.\n\nReturns `403` with `SUBSCRIPTION_LIMIT_REACHED` when the organization has reached the number of subscriptions its plan allows.\n\nRequires the `event-subscriptions:write` scope.\n","security":[{"token":["event-subscriptions:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The ID of the organization that owns the event subscriptions.","schema":{"type":"integer","minimum":1},"example":11}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["name","url","events"],"properties":{"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"\\S","description":"The name of the subscription. It must contain at least one non-whitespace character."},"url":{"type":"string","minLength":1,"description":"The HTTPS endpoint that receives the events. It must be publicly reachable and must not contain a username or password."},"events":{"description":"Which event types the subscription receives. `all` also includes event types added later.","oneOf":[{"type":"object","additionalProperties":false,"required":["mode"],"properties":{"mode":{"type":"string","enum":["all"]}}},{"type":"object","additionalProperties":false,"required":["mode","types"],"properties":{"mode":{"type":"string","enum":["selected"]},"types":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"description":"Event types returned by List event types.","items":{"type":"string","minLength":1}}}}]},"teams":{"description":"Which teams' events the subscription receives. Applies only to event types with `supportsTeamSelection`. Defaults to all teams.","oneOf":[{"type":"object","additionalProperties":false,"required":["mode"],"properties":{"mode":{"type":"string","enum":["all"]}}},{"type":"object","additionalProperties":false,"required":["mode","ids"],"properties":{"mode":{"type":"string","enum":["selected"]},"ids":{"type":"array","minItems":1,"maxItems":1000,"uniqueItems":true,"items":{"type":"integer","minimum":1,"maximum":2147483647}}}}]},"enabled":{"type":"boolean","default":true,"description":"If `false`, the subscription is created inactive and receives no events until it is enabled."}}},"examples":{"selectedEvents":{"summary":"Selected event types from selected teams","value":{"name":"Scenario changes","url":"https://example.com/make-events","events":{"mode":"selected","types":["scenario.created","scenario.deleted"]},"teams":{"mode":"selected","ids":[212]}}},"allEvents":{"summary":"All event types from all teams","value":{"name":"Everything","url":"https://example.com/make-events","events":{"mode":"all"}}}}}}},"responses":{"200":{"description":"The created subscription and its signing secret.","content":{"application/json":{"schema":{"type":"object","required":["subscription","signingSecret"],"properties":{"subscription":{"type":"object","required":["id","organizationId","name","url","status","events","teams","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"integer"},"name":{"type":"string"},"url":{"type":"string"},"status":{"type":"object","required":["state","reason"],"properties":{"state":{"type":"string","enum":["active","inactive","suspended"],"description":"`active` receives events, `inactive` was disabled, and `suspended` stopped sending after repeated failed deliveries until it is enabled again."},"reason":{"type":"string","nullable":true,"description":"Why the subscription is `suspended`, and `null` for other states. New reasons may be added, so accept unknown values.","example":"repeated_failures"}}},"events":{"type":"object","required":["mode","payloadVersions"],"properties":{"mode":{"type":"string","enum":["all","selected"]},"types":{"type":"array","description":"Present when `mode` is `selected`.","items":{"type":"string"}},"payloadVersions":{"type":"object","description":"The payload version this subscription receives for each subscribed event type. Read-only.","additionalProperties":{"type":"integer","minimum":1}}}},"teams":{"type":"object","required":["mode"],"properties":{"mode":{"type":"string","enum":["all","selected"]},"ids":{"type":"array","description":"Present when `mode` is `selected`.","items":{"type":"integer"}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"signingSecret":{"type":"string","description":"The secret used to sign every delivery to this subscription. Store it to verify the deliveries."}}},"examples":{"default":{"summary":"The created subscription and its signing secret","value":{"subscription":{"id":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12","organizationId":11,"name":"Scenario changes","url":"https://example.com/make-events","status":{"state":"active","reason":null},"events":{"mode":"selected","types":["scenario.created","scenario.deleted"],"payloadVersions":{"scenario.created":1,"scenario.deleted":1}},"teams":{"mode":"selected","ids":[212]},"createdAt":"2026-10-21T09:30:00.000Z","updatedAt":"2026-10-21T09:30:00.000Z"},"signingSecret":"4f8b2c9d1e7a6b3c5d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a"}}}}}},"400":{"description":"A parameter or the request body is invalid (`VALIDATION_FAILED` or `INVALID_URL`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"invalidUrl":{"summary":"The URL contains credentials","value":{"code":"INVALID_URL","message":"Invalid URL","detail":"The URL must not contain credentials."}}}}}},"401":{"description":"Authentication failed, the token lacks the required scope, or an organization-bound token was used for another organization (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: event-subscriptions:read"}}}}}},"403":{"description":"The user lacks the Event subscriptions permission this action needs in the organization (`FORBIDDEN`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"permissionDenied":{"summary":"Missing permission","value":{"code":"FORBIDDEN","message":"Forbidden","detail":"You do not have permission to perform this action."}}}}}},"500":{"description":"An unexpected error occurred (`INTERNAL_ERROR`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"internalError":{"summary":"Unexpected error","value":{"code":"INTERNAL_ERROR","message":"Internal error","detail":"An unexpected error occurred."}}}}}},"503":{"description":"A required service is temporarily unavailable (`SERVICE_UNAVAILABLE`). Retry the request.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"serviceUnavailable":{"summary":"Temporarily unavailable","value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable","detail":"A required service is temporarily unavailable. Retry the request."}}}}}}}}},"/event-subscriptions/v1/organizations/{organizationId}/subscriptions/{subscriptionId}":{"get":{"x-internal":true,"operationId":"getEventSubscription","tags":["Event subscriptions"],"summary":"Get an event subscription","description":"Gets an event subscription and its current status.\n\nRequires the `event-subscriptions:read` scope.\n","security":[{"token":["event-subscriptions:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The ID of the organization that owns the event subscriptions.","schema":{"type":"integer","minimum":1},"example":11},{"name":"subscriptionId","in":"path","required":true,"description":"The ID of the event subscription.","schema":{"type":"string","format":"uuid"},"example":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12"}],"responses":{"200":{"description":"The event subscription.","content":{"application/json":{"schema":{"type":"object","required":["subscription"],"properties":{"subscription":{"type":"object","required":["id","organizationId","name","url","status","events","teams","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"integer"},"name":{"type":"string"},"url":{"type":"string"},"status":{"type":"object","required":["state","reason"],"properties":{"state":{"type":"string","enum":["active","inactive","suspended"],"description":"`active` receives events, `inactive` was disabled, and `suspended` stopped sending after repeated failed deliveries until it is enabled again."},"reason":{"type":"string","nullable":true,"description":"Why the subscription is `suspended`, and `null` for other states. New reasons may be added, so accept unknown values.","example":"repeated_failures"}}},"events":{"type":"object","required":["mode","payloadVersions"],"properties":{"mode":{"type":"string","enum":["all","selected"]},"types":{"type":"array","description":"Present when `mode` is `selected`.","items":{"type":"string"}},"payloadVersions":{"type":"object","description":"The payload version this subscription receives for each subscribed event type. Read-only.","additionalProperties":{"type":"integer","minimum":1}}}},"teams":{"type":"object","required":["mode"],"properties":{"mode":{"type":"string","enum":["all","selected"]},"ids":{"type":"array","description":"Present when `mode` is `selected`.","items":{"type":"integer"}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"default":{"summary":"A subscription to two scenario event types from one team","value":{"subscription":{"id":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12","organizationId":11,"name":"Scenario changes","url":"https://example.com/make-events","status":{"state":"active","reason":null},"events":{"mode":"selected","types":["scenario.created","scenario.deleted"],"payloadVersions":{"scenario.created":1,"scenario.deleted":1}},"teams":{"mode":"selected","ids":[212]},"createdAt":"2026-10-21T09:30:00.000Z","updatedAt":"2026-10-21T09:30:00.000Z"}}}}}}},"400":{"description":"A parameter or the request body is invalid (`VALIDATION_FAILED` or `INVALID_URL`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"invalidUrl":{"summary":"The URL contains credentials","value":{"code":"INVALID_URL","message":"Invalid URL","detail":"The URL must not contain credentials."}}}}}},"401":{"description":"Authentication failed, the token lacks the required scope, or an organization-bound token was used for another organization (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: event-subscriptions:read"}}}}}},"403":{"description":"The user lacks the Event subscriptions permission this action needs in the organization (`FORBIDDEN`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"permissionDenied":{"summary":"Missing permission","value":{"code":"FORBIDDEN","message":"Forbidden","detail":"You do not have permission to perform this action."}}}}}},"404":{"description":"The subscription does not exist in this organization (`SUBSCRIPTION_NOT_FOUND`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"subscriptionNotFound":{"summary":"Unknown subscription","value":{"code":"SUBSCRIPTION_NOT_FOUND","message":"Subscription not found","detail":"The subscription does not exist in this organization."}}}}}},"500":{"description":"An unexpected error occurred (`INTERNAL_ERROR`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"internalError":{"summary":"Unexpected error","value":{"code":"INTERNAL_ERROR","message":"Internal error","detail":"An unexpected error occurred."}}}}}},"503":{"description":"A required service is temporarily unavailable (`SERVICE_UNAVAILABLE`). Retry the request.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"serviceUnavailable":{"summary":"Temporarily unavailable","value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable","detail":"A required service is temporarily unavailable. Retry the request."}}}}}}}},"patch":{"x-internal":true,"operationId":"updateEventSubscription","tags":["Event subscriptions"],"summary":"Update an event subscription","description":"Updates the fields in the request body and leaves the others unchanged. Send at least one field.\n\nTo change whether the subscription receives events, use Enable or Disable instead.\n\nRequires the `event-subscriptions:write` scope.\n","security":[{"token":["event-subscriptions:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The ID of the organization that owns the event subscriptions.","schema":{"type":"integer","minimum":1},"example":11},{"name":"subscriptionId","in":"path","required":true,"description":"The ID of the event subscription.","schema":{"type":"string","format":"uuid"},"example":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"\\S","description":"The name of the subscription. It must contain at least one non-whitespace character."},"url":{"type":"string","minLength":1,"description":"The HTTPS endpoint that receives the events. It must be publicly reachable and must not contain a username or password."},"events":{"description":"Which event types the subscription receives. `all` also includes event types added later.","oneOf":[{"type":"object","additionalProperties":false,"required":["mode"],"properties":{"mode":{"type":"string","enum":["all"]}}},{"type":"object","additionalProperties":false,"required":["mode","types"],"properties":{"mode":{"type":"string","enum":["selected"]},"types":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"description":"Event types returned by List event types.","items":{"type":"string","minLength":1}}}}]},"teams":{"description":"Which teams' events the subscription receives. Applies only to event types with `supportsTeamSelection`. Defaults to all teams.","oneOf":[{"type":"object","additionalProperties":false,"required":["mode"],"properties":{"mode":{"type":"string","enum":["all"]}}},{"type":"object","additionalProperties":false,"required":["mode","ids"],"properties":{"mode":{"type":"string","enum":["selected"]},"ids":{"type":"array","minItems":1,"maxItems":1000,"uniqueItems":true,"items":{"type":"integer","minimum":1,"maximum":2147483647}}}}]}}},"examples":{"rename":{"summary":"Rename the subscription","value":{"name":"Scenario lifecycle"}},"allTeams":{"summary":"Receive events from all teams","value":{"teams":{"mode":"all"}}}}}}},"responses":{"200":{"description":"The updated event subscription.","content":{"application/json":{"schema":{"type":"object","required":["subscription"],"properties":{"subscription":{"type":"object","required":["id","organizationId","name","url","status","events","teams","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"integer"},"name":{"type":"string"},"url":{"type":"string"},"status":{"type":"object","required":["state","reason"],"properties":{"state":{"type":"string","enum":["active","inactive","suspended"],"description":"`active` receives events, `inactive` was disabled, and `suspended` stopped sending after repeated failed deliveries until it is enabled again."},"reason":{"type":"string","nullable":true,"description":"Why the subscription is `suspended`, and `null` for other states. New reasons may be added, so accept unknown values.","example":"repeated_failures"}}},"events":{"type":"object","required":["mode","payloadVersions"],"properties":{"mode":{"type":"string","enum":["all","selected"]},"types":{"type":"array","description":"Present when `mode` is `selected`.","items":{"type":"string"}},"payloadVersions":{"type":"object","description":"The payload version this subscription receives for each subscribed event type. Read-only.","additionalProperties":{"type":"integer","minimum":1}}}},"teams":{"type":"object","required":["mode"],"properties":{"mode":{"type":"string","enum":["all","selected"]},"ids":{"type":"array","description":"Present when `mode` is `selected`.","items":{"type":"integer"}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"default":{"summary":"A subscription to two scenario event types from one team","value":{"subscription":{"id":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12","organizationId":11,"name":"Scenario changes","url":"https://example.com/make-events","status":{"state":"active","reason":null},"events":{"mode":"selected","types":["scenario.created","scenario.deleted"],"payloadVersions":{"scenario.created":1,"scenario.deleted":1}},"teams":{"mode":"selected","ids":[212]},"createdAt":"2026-10-21T09:30:00.000Z","updatedAt":"2026-10-21T09:30:00.000Z"}}}}}}},"400":{"description":"A parameter or the request body is invalid (`VALIDATION_FAILED` or `INVALID_URL`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"invalidUrl":{"summary":"The URL contains credentials","value":{"code":"INVALID_URL","message":"Invalid URL","detail":"The URL must not contain credentials."}}}}}},"401":{"description":"Authentication failed, the token lacks the required scope, or an organization-bound token was used for another organization (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: event-subscriptions:read"}}}}}},"403":{"description":"The user lacks the Event subscriptions permission this action needs in the organization (`FORBIDDEN`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"permissionDenied":{"summary":"Missing permission","value":{"code":"FORBIDDEN","message":"Forbidden","detail":"You do not have permission to perform this action."}}}}}},"404":{"description":"The subscription does not exist in this organization (`SUBSCRIPTION_NOT_FOUND`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"subscriptionNotFound":{"summary":"Unknown subscription","value":{"code":"SUBSCRIPTION_NOT_FOUND","message":"Subscription not found","detail":"The subscription does not exist in this organization."}}}}}},"409":{"description":"The subscription can no longer deliver events and must be recreated (`SUBSCRIPTION_RECREATION_REQUIRED`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"recreationRequired":{"summary":"Subscription must be recreated","value":{"code":"SUBSCRIPTION_RECREATION_REQUIRED","message":"Subscription must be recreated","detail":"This subscription can no longer deliver events. Create a new one."}}}}}},"500":{"description":"An unexpected error occurred (`INTERNAL_ERROR`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"internalError":{"summary":"Unexpected error","value":{"code":"INTERNAL_ERROR","message":"Internal error","detail":"An unexpected error occurred."}}}}}},"503":{"description":"A required service is temporarily unavailable (`SERVICE_UNAVAILABLE`). Retry the request.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"serviceUnavailable":{"summary":"Temporarily unavailable","value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable","detail":"A required service is temporarily unavailable. Retry the request."}}}}}}}},"delete":{"x-internal":true,"operationId":"deleteEventSubscription","tags":["Event subscriptions"],"summary":"Delete an event subscription","description":"Deletes the event subscription. It stops receiving events immediately.\n\nRequires the `event-subscriptions:write` scope.\n","security":[{"token":["event-subscriptions:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The ID of the organization that owns the event subscriptions.","schema":{"type":"integer","minimum":1},"example":11},{"name":"subscriptionId","in":"path","required":true,"description":"The ID of the event subscription.","schema":{"type":"string","format":"uuid"},"example":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12"}],"responses":{"200":{"description":"The ID of the deleted subscription.","content":{"application/json":{"schema":{"type":"object","required":["subscription"],"properties":{"subscription":{"type":"string","format":"uuid","description":"The ID of the deleted subscription."}}},"examples":{"default":{"summary":"The ID of the deleted subscription","value":{"subscription":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12"}}}}}},"400":{"description":"A parameter or the request body is invalid (`VALIDATION_FAILED` or `INVALID_URL`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"invalidUrl":{"summary":"The URL contains credentials","value":{"code":"INVALID_URL","message":"Invalid URL","detail":"The URL must not contain credentials."}}}}}},"401":{"description":"Authentication failed, the token lacks the required scope, or an organization-bound token was used for another organization (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: event-subscriptions:read"}}}}}},"403":{"description":"The user lacks the Event subscriptions permission this action needs in the organization (`FORBIDDEN`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"permissionDenied":{"summary":"Missing permission","value":{"code":"FORBIDDEN","message":"Forbidden","detail":"You do not have permission to perform this action."}}}}}},"404":{"description":"The subscription does not exist in this organization (`SUBSCRIPTION_NOT_FOUND`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"subscriptionNotFound":{"summary":"Unknown subscription","value":{"code":"SUBSCRIPTION_NOT_FOUND","message":"Subscription not found","detail":"The subscription does not exist in this organization."}}}}}},"500":{"description":"An unexpected error occurred (`INTERNAL_ERROR`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"internalError":{"summary":"Unexpected error","value":{"code":"INTERNAL_ERROR","message":"Internal error","detail":"An unexpected error occurred."}}}}}},"503":{"description":"A required service is temporarily unavailable (`SERVICE_UNAVAILABLE`). Retry the request.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"serviceUnavailable":{"summary":"Temporarily unavailable","value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable","detail":"A required service is temporarily unavailable. Retry the request."}}}}}}}}},"/event-subscriptions/v1/organizations/{organizationId}/subscriptions/{subscriptionId}/enable":{"post":{"x-internal":true,"operationId":"enableEventSubscription","tags":["Event subscriptions"],"summary":"Enable an event subscription","description":"Starts sending events to the subscription again, including one that is `suspended` after repeated failed deliveries. Enabling an active subscription has no effect.\n\nRequires the `event-subscriptions:write` scope.\n","security":[{"token":["event-subscriptions:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The ID of the organization that owns the event subscriptions.","schema":{"type":"integer","minimum":1},"example":11},{"name":"subscriptionId","in":"path","required":true,"description":"The ID of the event subscription.","schema":{"type":"string","format":"uuid"},"example":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12"}],"responses":{"200":{"description":"The enabled event subscription.","content":{"application/json":{"schema":{"type":"object","required":["subscription"],"properties":{"subscription":{"type":"object","required":["id","organizationId","name","url","status","events","teams","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"integer"},"name":{"type":"string"},"url":{"type":"string"},"status":{"type":"object","required":["state","reason"],"properties":{"state":{"type":"string","enum":["active","inactive","suspended"],"description":"`active` receives events, `inactive` was disabled, and `suspended` stopped sending after repeated failed deliveries until it is enabled again."},"reason":{"type":"string","nullable":true,"description":"Why the subscription is `suspended`, and `null` for other states. New reasons may be added, so accept unknown values.","example":"repeated_failures"}}},"events":{"type":"object","required":["mode","payloadVersions"],"properties":{"mode":{"type":"string","enum":["all","selected"]},"types":{"type":"array","description":"Present when `mode` is `selected`.","items":{"type":"string"}},"payloadVersions":{"type":"object","description":"The payload version this subscription receives for each subscribed event type. Read-only.","additionalProperties":{"type":"integer","minimum":1}}}},"teams":{"type":"object","required":["mode"],"properties":{"mode":{"type":"string","enum":["all","selected"]},"ids":{"type":"array","description":"Present when `mode` is `selected`.","items":{"type":"integer"}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"default":{"summary":"A subscription to two scenario event types from one team","value":{"subscription":{"id":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12","organizationId":11,"name":"Scenario changes","url":"https://example.com/make-events","status":{"state":"active","reason":null},"events":{"mode":"selected","types":["scenario.created","scenario.deleted"],"payloadVersions":{"scenario.created":1,"scenario.deleted":1}},"teams":{"mode":"selected","ids":[212]},"createdAt":"2026-10-21T09:30:00.000Z","updatedAt":"2026-10-21T09:30:00.000Z"}}}}}}},"400":{"description":"A parameter or the request body is invalid (`VALIDATION_FAILED` or `INVALID_URL`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"invalidUrl":{"summary":"The URL contains credentials","value":{"code":"INVALID_URL","message":"Invalid URL","detail":"The URL must not contain credentials."}}}}}},"401":{"description":"Authentication failed, the token lacks the required scope, or an organization-bound token was used for another organization (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: event-subscriptions:read"}}}}}},"403":{"description":"The user lacks the Event subscriptions permission this action needs in the organization (`FORBIDDEN`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"permissionDenied":{"summary":"Missing permission","value":{"code":"FORBIDDEN","message":"Forbidden","detail":"You do not have permission to perform this action."}}}}}},"404":{"description":"The subscription does not exist in this organization (`SUBSCRIPTION_NOT_FOUND`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"subscriptionNotFound":{"summary":"Unknown subscription","value":{"code":"SUBSCRIPTION_NOT_FOUND","message":"Subscription not found","detail":"The subscription does not exist in this organization."}}}}}},"409":{"description":"The subscription can no longer deliver events and must be recreated (`SUBSCRIPTION_RECREATION_REQUIRED`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"recreationRequired":{"summary":"Subscription must be recreated","value":{"code":"SUBSCRIPTION_RECREATION_REQUIRED","message":"Subscription must be recreated","detail":"This subscription can no longer deliver events. Create a new one."}}}}}},"500":{"description":"An unexpected error occurred (`INTERNAL_ERROR`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"internalError":{"summary":"Unexpected error","value":{"code":"INTERNAL_ERROR","message":"Internal error","detail":"An unexpected error occurred."}}}}}},"503":{"description":"A required service is temporarily unavailable (`SERVICE_UNAVAILABLE`). Retry the request.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"serviceUnavailable":{"summary":"Temporarily unavailable","value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable","detail":"A required service is temporarily unavailable. Retry the request."}}}}}}}}},"/event-subscriptions/v1/organizations/{organizationId}/subscriptions/{subscriptionId}/disable":{"post":{"x-internal":true,"operationId":"disableEventSubscription","tags":["Event subscriptions"],"summary":"Disable an event subscription","description":"Stops sending events to the subscription until it is enabled again. Events that occur meanwhile are not delivered later. Disabling an inactive subscription has no effect.\n\nRequires the `event-subscriptions:write` scope.\n","security":[{"token":["event-subscriptions:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The ID of the organization that owns the event subscriptions.","schema":{"type":"integer","minimum":1},"example":11},{"name":"subscriptionId","in":"path","required":true,"description":"The ID of the event subscription.","schema":{"type":"string","format":"uuid"},"example":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12"}],"responses":{"200":{"description":"The disabled event subscription.","content":{"application/json":{"schema":{"type":"object","required":["subscription"],"properties":{"subscription":{"type":"object","required":["id","organizationId","name","url","status","events","teams","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"integer"},"name":{"type":"string"},"url":{"type":"string"},"status":{"type":"object","required":["state","reason"],"properties":{"state":{"type":"string","enum":["active","inactive","suspended"],"description":"`active` receives events, `inactive` was disabled, and `suspended` stopped sending after repeated failed deliveries until it is enabled again."},"reason":{"type":"string","nullable":true,"description":"Why the subscription is `suspended`, and `null` for other states. New reasons may be added, so accept unknown values.","example":"repeated_failures"}}},"events":{"type":"object","required":["mode","payloadVersions"],"properties":{"mode":{"type":"string","enum":["all","selected"]},"types":{"type":"array","description":"Present when `mode` is `selected`.","items":{"type":"string"}},"payloadVersions":{"type":"object","description":"The payload version this subscription receives for each subscribed event type. Read-only.","additionalProperties":{"type":"integer","minimum":1}}}},"teams":{"type":"object","required":["mode"],"properties":{"mode":{"type":"string","enum":["all","selected"]},"ids":{"type":"array","description":"Present when `mode` is `selected`.","items":{"type":"integer"}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"examples":{"default":{"summary":"A subscription to two scenario event types from one team","value":{"subscription":{"id":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12","organizationId":11,"name":"Scenario changes","url":"https://example.com/make-events","status":{"state":"active","reason":null},"events":{"mode":"selected","types":["scenario.created","scenario.deleted"],"payloadVersions":{"scenario.created":1,"scenario.deleted":1}},"teams":{"mode":"selected","ids":[212]},"createdAt":"2026-10-21T09:30:00.000Z","updatedAt":"2026-10-21T09:30:00.000Z"}}}}}}},"400":{"description":"A parameter or the request body is invalid (`VALIDATION_FAILED` or `INVALID_URL`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"invalidUrl":{"summary":"The URL contains credentials","value":{"code":"INVALID_URL","message":"Invalid URL","detail":"The URL must not contain credentials."}}}}}},"401":{"description":"Authentication failed, the token lacks the required scope, or an organization-bound token was used for another organization (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: event-subscriptions:read"}}}}}},"403":{"description":"The user lacks the Event subscriptions permission this action needs in the organization (`FORBIDDEN`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"permissionDenied":{"summary":"Missing permission","value":{"code":"FORBIDDEN","message":"Forbidden","detail":"You do not have permission to perform this action."}}}}}},"404":{"description":"The subscription does not exist in this organization (`SUBSCRIPTION_NOT_FOUND`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"subscriptionNotFound":{"summary":"Unknown subscription","value":{"code":"SUBSCRIPTION_NOT_FOUND","message":"Subscription not found","detail":"The subscription does not exist in this organization."}}}}}},"409":{"description":"The subscription can no longer deliver events and must be recreated (`SUBSCRIPTION_RECREATION_REQUIRED`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"recreationRequired":{"summary":"Subscription must be recreated","value":{"code":"SUBSCRIPTION_RECREATION_REQUIRED","message":"Subscription must be recreated","detail":"This subscription can no longer deliver events. Create a new one."}}}}}},"500":{"description":"An unexpected error occurred (`INTERNAL_ERROR`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"internalError":{"summary":"Unexpected error","value":{"code":"INTERNAL_ERROR","message":"Internal error","detail":"An unexpected error occurred."}}}}}},"503":{"description":"A required service is temporarily unavailable (`SERVICE_UNAVAILABLE`). Retry the request.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"serviceUnavailable":{"summary":"Temporarily unavailable","value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable","detail":"A required service is temporarily unavailable. Retry the request."}}}}}}}}},"/event-subscriptions/v1/organizations/{organizationId}/subscriptions/{subscriptionId}/deliveries":{"get":{"x-internal":true,"operationId":"listEventSubscriptionDeliveries","tags":["Event subscriptions"],"summary":"List deliveries","description":"Lists the deliveries of an event subscription, newest first by default.\n\nTo get the next page, set `pg[last]` to the `id` of the last delivery on the current page.\n\nRequires the `event-subscriptions:read` scope.\n","security":[{"token":["event-subscriptions:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The ID of the organization that owns the event subscriptions.","schema":{"type":"integer","minimum":1},"example":11},{"name":"subscriptionId","in":"path","required":true,"description":"The ID of the event subscription.","schema":{"type":"string","format":"uuid"},"example":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12"},{"name":"pg[limit]","in":"query","description":"The maximum number of deliveries to return.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"example":20},{"name":"pg[sortDir]","in":"query","description":"The sort direction.","schema":{"type":"string","enum":["asc","desc"],"default":"desc"},"example":"desc"},{"name":"pg[last]","in":"query","description":"The ID of the last delivery on the previous page. The response starts after it. Must be a delivery of this subscription.","schema":{"type":"string","format":"uuid"},"example":"9a7c1b2d-3e4f-4a6b-8c1d-2e3f4a5b6c7d"},{"name":"pg[showLast]","in":"query","description":"If `true`, the response also includes the delivery set in `pg[last]`.","schema":{"type":"boolean","default":false},"example":false},{"name":"eventType","in":"query","description":"Return only deliveries of this event type.","schema":{"type":"string","minLength":1},"example":"scenario.created"},{"name":"createdFrom","in":"query","description":"Return only deliveries created at or after this time (inclusive).","schema":{"type":"string","format":"date-time"},"example":"2026-10-01T00:00:00.000Z"},{"name":"createdTo","in":"query","description":"Return only deliveries created before this time (exclusive).","schema":{"type":"string","format":"date-time"},"example":"2026-11-01T00:00:00.000Z"}],"responses":{"200":{"description":"A page of the subscription's deliveries.","content":{"application/json":{"schema":{"type":"object","required":["deliveries","pg"],"properties":{"deliveries":{"type":"array","items":{"type":"object","required":["id","subscriptionId","eventType","payloadVersion","teamId","status","attemptCount","succeededAt","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"subscriptionId":{"type":"string","format":"uuid"},"eventType":{"type":"string","nullable":true},"payloadVersion":{"type":"integer","nullable":true},"teamId":{"type":"integer","nullable":true,"description":"The team the event belongs to, and `null` for organization-level events."},"status":{"type":"object","required":["state","reason","httpStatus"],"properties":{"state":{"type":"string","enum":["pending","succeeded","failed"]},"reason":{"type":"string","nullable":true,"enum":["endpoint_error","endpoint_unreachable","subscription_suspended","platform_error"],"description":"Why the delivery `failed`, and `null` otherwise."},"httpStatus":{"type":"integer","nullable":true,"description":"The HTTP status of the latest attempt, if the endpoint answered."}}},"attemptCount":{"type":"integer"},"succeededAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}}}},"pg":{"type":"object","required":["limit","sortDir"],"properties":{"limit":{"type":"integer"},"sortDir":{"type":"string","enum":["asc","desc"]},"last":{"type":"string","format":"uuid"},"showLast":{"type":"boolean"}}}}},"examples":{"default":{"summary":"One page of deliveries","value":{"deliveries":[{"id":"9a7c1b2d-3e4f-4a6b-8c1d-2e3f4a5b6c7d","subscriptionId":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12","eventType":"scenario.created","payloadVersion":1,"teamId":212,"status":{"state":"succeeded","reason":null,"httpStatus":200},"attemptCount":1,"succeededAt":"2026-10-21T10:15:02.120Z","createdAt":"2026-10-21T10:15:01.870Z"}],"pg":{"limit":20,"sortDir":"desc"}}}}}}},"400":{"description":"A parameter or the request body is invalid (`VALIDATION_FAILED` or `INVALID_URL`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"invalidUrl":{"summary":"The URL contains credentials","value":{"code":"INVALID_URL","message":"Invalid URL","detail":"The URL must not contain credentials."}}}}}},"401":{"description":"Authentication failed, the token lacks the required scope, or an organization-bound token was used for another organization (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: event-subscriptions:read"}}}}}},"403":{"description":"The user lacks the Event subscriptions permission this action needs in the organization (`FORBIDDEN`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"permissionDenied":{"summary":"Missing permission","value":{"code":"FORBIDDEN","message":"Forbidden","detail":"You do not have permission to perform this action."}}}}}},"404":{"description":"The subscription does not exist in this organization (`SUBSCRIPTION_NOT_FOUND`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"subscriptionNotFound":{"summary":"Unknown subscription","value":{"code":"SUBSCRIPTION_NOT_FOUND","message":"Subscription not found","detail":"The subscription does not exist in this organization."}}}}}},"500":{"description":"An unexpected error occurred (`INTERNAL_ERROR`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"internalError":{"summary":"Unexpected error","value":{"code":"INTERNAL_ERROR","message":"Internal error","detail":"An unexpected error occurred."}}}}}},"503":{"description":"A required service is temporarily unavailable (`SERVICE_UNAVAILABLE`). Retry the request.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"serviceUnavailable":{"summary":"Temporarily unavailable","value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable","detail":"A required service is temporarily unavailable. Retry the request."}}}}}}}}},"/event-subscriptions/v1/organizations/{organizationId}/subscriptions/{subscriptionId}/deliveries/{deliveryId}":{"get":{"x-internal":true,"operationId":"getEventSubscriptionDelivery","tags":["Event subscriptions"],"summary":"Get a delivery","description":"Gets a delivery with the event that was sent and every attempt to send it.\n\nRequires the `event-subscriptions:read` scope.\n","security":[{"token":["event-subscriptions:read"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The ID of the organization that owns the event subscriptions.","schema":{"type":"integer","minimum":1},"example":11},{"name":"subscriptionId","in":"path","required":true,"description":"The ID of the event subscription.","schema":{"type":"string","format":"uuid"},"example":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12"},{"name":"deliveryId","in":"path","required":true,"description":"The ID of the delivery.","schema":{"type":"string","format":"uuid"},"example":"9a7c1b2d-3e4f-4a6b-8c1d-2e3f4a5b6c7d"}],"responses":{"200":{"description":"The delivery with its event and attempts.","content":{"application/json":{"schema":{"type":"object","required":["delivery"],"properties":{"delivery":{"allOf":[{"type":"object","required":["id","subscriptionId","eventType","payloadVersion","teamId","status","attemptCount","succeededAt","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"subscriptionId":{"type":"string","format":"uuid"},"eventType":{"type":"string","nullable":true},"payloadVersion":{"type":"integer","nullable":true},"teamId":{"type":"integer","nullable":true,"description":"The team the event belongs to, and `null` for organization-level events."},"status":{"type":"object","required":["state","reason","httpStatus"],"properties":{"state":{"type":"string","enum":["pending","succeeded","failed"]},"reason":{"type":"string","nullable":true,"enum":["endpoint_error","endpoint_unreachable","subscription_suspended","platform_error"],"description":"Why the delivery `failed`, and `null` otherwise."},"httpStatus":{"type":"integer","nullable":true,"description":"The HTTP status of the latest attempt, if the endpoint answered."}}},"attemptCount":{"type":"integer"},"succeededAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},{"type":"object","required":["event","attempts"],"properties":{"event":{"type":"object","description":"The event as it was sent to the endpoint.","required":["type","version","data","timestamp"],"properties":{"type":{"type":"string"},"version":{"type":"integer"},"data":{"type":"object","additionalProperties":true},"timestamp":{"type":"string","format":"date-time"}}},"attempts":{"type":"array","description":"Every attempt, newest first.","items":{"type":"object","required":["attemptNumber","manual","attemptedAt","durationMs","status","responseBody","responseBodyTruncated"],"properties":{"attemptNumber":{"type":"integer"},"manual":{"type":"boolean","description":"`true` for an attempt started by Resend a delivery."},"attemptedAt":{"type":"string","format":"date-time"},"durationMs":{"type":"integer","nullable":true},"status":{"type":"object","required":["state","reason","httpStatus"],"properties":{"state":{"type":"string","enum":["succeeded","failed"]},"reason":{"type":"string","nullable":true,"enum":["endpoint_error","endpoint_unreachable"]},"httpStatus":{"type":"integer","nullable":true}}},"responseBody":{"type":"string","nullable":true,"description":"The endpoint's response, cut off at 4 KiB. It comes from the endpoint, so treat it as untrusted."},"responseBodyTruncated":{"type":"boolean"}}}}}}]}}},"examples":{"default":{"summary":"A delivery that succeeded on the first attempt","value":{"delivery":{"id":"9a7c1b2d-3e4f-4a6b-8c1d-2e3f4a5b6c7d","subscriptionId":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12","eventType":"scenario.created","payloadVersion":1,"teamId":212,"status":{"state":"succeeded","reason":null,"httpStatus":200},"attemptCount":1,"succeededAt":"2026-10-21T10:15:02.120Z","createdAt":"2026-10-21T10:15:01.870Z","event":{"type":"scenario.created","version":1,"data":{"scenario_id":4512,"user_id":87,"team_id":212,"organization_id":11},"timestamp":"2026-10-21T10:15:01.850Z"},"attempts":[{"attemptNumber":1,"manual":false,"attemptedAt":"2026-10-21T10:15:01.900Z","durationMs":220,"status":{"state":"succeeded","reason":null,"httpStatus":200},"responseBody":"{\"received\":true}","responseBodyTruncated":false}]}}}}}}},"400":{"description":"A parameter or the request body is invalid (`VALIDATION_FAILED` or `INVALID_URL`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"invalidUrl":{"summary":"The URL contains credentials","value":{"code":"INVALID_URL","message":"Invalid URL","detail":"The URL must not contain credentials."}}}}}},"401":{"description":"Authentication failed, the token lacks the required scope, or an organization-bound token was used for another organization (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: event-subscriptions:read"}}}}}},"403":{"description":"The user lacks the Event subscriptions permission this action needs in the organization (`FORBIDDEN`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"permissionDenied":{"summary":"Missing permission","value":{"code":"FORBIDDEN","message":"Forbidden","detail":"You do not have permission to perform this action."}}}}}},"404":{"description":"The subscription or the delivery does not exist (`SUBSCRIPTION_NOT_FOUND` or `DELIVERY_NOT_FOUND`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"deliveryNotFound":{"summary":"Unknown delivery","value":{"code":"DELIVERY_NOT_FOUND","message":"Delivery not found","detail":"The delivery does not exist for this subscription."}}}}}},"500":{"description":"An unexpected error occurred (`INTERNAL_ERROR`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"internalError":{"summary":"Unexpected error","value":{"code":"INTERNAL_ERROR","message":"Internal error","detail":"An unexpected error occurred."}}}}}},"503":{"description":"A required service is temporarily unavailable (`SERVICE_UNAVAILABLE`). Retry the request.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"serviceUnavailable":{"summary":"Temporarily unavailable","value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable","detail":"A required service is temporarily unavailable. Retry the request."}}}}}}}}},"/event-subscriptions/v1/organizations/{organizationId}/subscriptions/{subscriptionId}/deliveries/{deliveryId}/resend":{"post":{"x-internal":true,"operationId":"resendEventSubscriptionDelivery","tags":["Event subscriptions"],"summary":"Resend a delivery","description":"Sends the delivery's event to the endpoint again as a new, manual attempt. The response confirms that the resend was accepted, not that it succeeded. Get the delivery to see the outcome.\n\nRequires the `event-subscriptions:write` scope.\n","security":[{"token":["event-subscriptions:write"]}],"parameters":[{"name":"organizationId","in":"path","required":true,"description":"The ID of the organization that owns the event subscriptions.","schema":{"type":"integer","minimum":1},"example":11},{"name":"subscriptionId","in":"path","required":true,"description":"The ID of the event subscription.","schema":{"type":"string","format":"uuid"},"example":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12"},{"name":"deliveryId","in":"path","required":true,"description":"The ID of the delivery.","schema":{"type":"string","format":"uuid"},"example":"9a7c1b2d-3e4f-4a6b-8c1d-2e3f4a5b6c7d"}],"responses":{"202":{"description":"The resend was accepted.","content":{"application/json":{"schema":{"type":"object","required":["resend"],"properties":{"resend":{"type":"object","required":["deliveryId","subscriptionId"],"properties":{"deliveryId":{"type":"string","format":"uuid"},"subscriptionId":{"type":"string","format":"uuid"}}}}},"examples":{"default":{"summary":"The resend was accepted","value":{"resend":{"deliveryId":"9a7c1b2d-3e4f-4a6b-8c1d-2e3f4a5b6c7d","subscriptionId":"3f2b8c1e-6a4d-4e2f-9b7a-1c5d8e9f0a12"}}}}}}},"400":{"description":"A parameter or the request body is invalid (`VALIDATION_FAILED` or `INVALID_URL`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"invalidUrl":{"summary":"The URL contains credentials","value":{"code":"INVALID_URL","message":"Invalid URL","detail":"The URL must not contain credentials."}}}}}},"401":{"description":"Authentication failed, the token lacks the required scope, or an organization-bound token was used for another organization (`IM001` or `SC401`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"missingScope":{"summary":"The token lacks the required scope","value":{"code":"IM001","message":"Access denied","detail":"Required scope: event-subscriptions:read"}}}}}},"403":{"description":"The user lacks the Event subscriptions permission this action needs in the organization (`FORBIDDEN`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"permissionDenied":{"summary":"Missing permission","value":{"code":"FORBIDDEN","message":"Forbidden","detail":"You do not have permission to perform this action."}}}}}},"404":{"description":"The subscription or the delivery does not exist (`SUBSCRIPTION_NOT_FOUND` or `DELIVERY_NOT_FOUND`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"deliveryNotFound":{"summary":"Unknown delivery","value":{"code":"DELIVERY_NOT_FOUND","message":"Delivery not found","detail":"The delivery does not exist for this subscription."}}}}}},"409":{"description":"The delivery can't be resent (`DELIVERY_NOT_RETRYABLE`, `SUBSCRIPTION_INACTIVE` or `SUBSCRIPTION_SUSPENDED`): it hasn't been attempted yet, it is too old to resend, or the subscription isn't active. Enable the subscription before resending.\n","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"tooOld":{"summary":"The delivery is too old to resend","value":{"code":"DELIVERY_NOT_RETRYABLE","message":"Delivery not retryable","detail":"The delivery is too old to resend."}},"subscriptionInactive":{"summary":"The subscription is inactive","value":{"code":"SUBSCRIPTION_INACTIVE","message":"Subscription inactive","detail":"The subscription is inactive. Enable it, then resend."}}}}}},"500":{"description":"An unexpected error occurred (`INTERNAL_ERROR`).","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"internalError":{"summary":"Unexpected error","value":{"code":"INTERNAL_ERROR","message":"Internal error","detail":"An unexpected error occurred."}}}}}},"503":{"description":"A required service is temporarily unavailable (`SERVICE_UNAVAILABLE`). Retry the request.","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"A stable error code, for example `SUBSCRIPTION_NOT_FOUND`."},"message":{"type":"string"},"detail":{"type":"string","description":"What went wrong and, where possible, how to fix it."}}},"examples":{"serviceUnavailable":{"summary":"Temporarily unavailable","value":{"code":"SERVICE_UNAVAILABLE","message":"Service unavailable","detail":"A required service is temporarily unavailable. Retry the request."}}}}}}}}}}}