API & DEVELOPERS

REST reference · v1

Set exact service permissions

PUT/v1/workspaces/{workspaceId}/service-permissions/{provider}/{environment}

Designated global access administrator only, for an existing active/invited company member. Exact production/sandbox grant overrides the * default; empty actions deny access. Does not assign company membership.

Company permissions

Designated global access administrator only, for an existing active/invited company member. Exact production/sandbox grant overrides the * default; empty actions deny access. Does not assign company membership.

Required OAuth scopes: orchesphere.read, orchesphere.manage. How scopes and company rights work.

Path and header parameters

NameLocationRequiredAllowed values / bounds
workspaceIdpathYesstring
minLength: 8 · maxLength: 80 · pattern: ^[A-Za-z0-9_-]{8,80}$
providerpathYes"quickbooks" | "netsuite" | "stripe" | "paypal" | "payoneer" | "us-bank" | "bank-accounts" | "plaid" | "avalara" | "track1099" | "thomson-reuters" | "xero" | "sage" | "freshbooks" | "zoho-books" | "bill" | "ramp" | "brex" | "expensify" | "gusto" | "rippling" | "square" | "chargebee" | "recurly" | "pipe17" | "magento" | "shopify" | "bigcommerce" | "salsify" | "amazon" | "walmart" | "ebay" | "channelengine" | "mirakl" | "chewy" | "sellerboard" | "sps" | "netsuite-connector" | "gs1" | "orderful" | "woocommerce" | "commercetools" | "prestashop" | "etsy" | "tiktok-shop" | "faire" | "rithum" | "klaviyo" | "amazon-ads" | "google-ads" | "shipbob" | "shipstation" | "flavorcloud" | "aftership" | "ups" | "fedex" | "dhl" | "usps" | "easypost" | "shippo" | "easyship" | "flexport" | "dsv" | "shiphero" | "entra" | "sharepoint" | "onedrive" | "teams" | "outlook" | "outlook-calendar" | "exchange-fur4" | "exchange-platformz" | "google-workspace" | "jira" | "confluence" | "slack" | "notion" | "asana" | "linear" | "airtable" | "ipostal" | "clickup" | "monday" | "trello" | "smartsheet" | "basecamp" | "zoom" | "dropbox" | "box" | "docusign" | "pandadoc" | "figma" | "canva" | "miro" | "hubspot" | "salesforce" | "zendesk" | "servicenow" | "mailchimp" | "mandrill" | "twilio" | "sendgrid" | "brandfolder" | "strapi" | "google-analytics" | "intercom" | "helpscout" | "freshdesk" | "zoho-crm" | "pipedrive" | "activecampaign" | "constant-contact" | "customer-io" | "aws" | "cloudflare" | "google-cloud" | "new-relic" | "plerion" | "postman" | "github" | "azure" | "digitalocean" | "vercel" | "netlify" | "supabase" | "firebase" | "sentry" | "datadog" | "grafana" | "gitlab" | "bitbucket" | "docker" | "snowflake" | "databricks" | "bigquery" | "redshift" | "mongodb" | "postgresql" | "mysql" | "tableau" | "power-bi" | "looker" | "fivetran" | "airbyte" | "dbt" | "segment" | "openai" | "anthropic" | "gemini" | "bedrock" | "azure-openai" | "perplexity" | "cohere" | "hugging-face" | "elevenlabs" | "heygen" | "cursor"
pattern: ^[a-z0-9][a-z0-9-]{1,63}$
environmentpathYes"production" | "sandbox" | "*"

Request

JSON body: required.

FieldTypeRequiredDescription / bounds
emailstringYesminLength: 3 · maxLength: 254 · format: email
actionsarrayYesNonempty actions require read. jobs_cancel_all requires jobs_read_all. Empty array denies access. Viewer members may receive read-only actions only. · maxItems: 5
Complete request schema
{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "minLength": 3,
      "maxLength": 254
    },
    "actions": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "read",
          "verify",
          "configure",
          "jobs_read_all",
          "jobs_cancel_all"
        ]
      },
      "uniqueItems": true,
      "maxItems": 5,
      "description": "Nonempty actions require read. jobs_cancel_all requires jobs_read_all. Empty array denies access. Viewer members may receive read-only actions only."
    }
  },
  "required": [
    "email",
    "actions"
  ],
  "additionalProperties": false
}
http
PUT /v1/workspaces/{workspaceId}/service-permissions/{provider}/{environment} HTTP/1.1
Host: api.orchesphere.ai
Authorization: Bearer <access_token>
Accept: application/json
Content-Type: application/json

{
  "email": "developer@example.com",
  "actions": [
    "read",
    "verify"
  ]
}

Use actual IDs returned for your assigned workspace. The example values are fictional. REST v1 accepts no query parameters.

Response · 200

FieldTypeRequiredDescription / bounds
okobjectYes—
Complete response schema
{
  "type": "object",
  "properties": {
    "ok": {
      "const": true
    }
  },
  "required": [
    "ok"
  ],
  "additionalProperties": false
}
json
{
  "ok": true
}

Errors

StatusMeaning
400Invalid path/query/body/header or business validation.
401Missing, expired, revoked, invalid or wrong-resource token.
402Verified company payment is required.
403Insufficient token scope or current company/service/portal/task authority.
404Unknown endpoint or record not found/inaccessible.
405Method is not supported for this path.
409State, quota or idempotency conflict; re-read current state.
413Request exceeds 24,000 bytes.
415Use uncompressed application/json.
429Company job/rate/paid-period allowance reached.
503Temporarily unavailable; a lost mutation response does not prove nothing was saved.

Request limits and recovery · All REST operations