openapi: 3.1.0 info: description: Workflow management API for B3OS title: B3OS Workflow Action Orgs API version: '1.0' tags: - name: Orgs paths: /v1/orgs/{orgId}/integrations/pipedream: post: description: Handle Pipedream trigger source webhook event parameters: - description: Organization ID in: path name: orgId required: true schema: type: string - description: Webhook secret in: query name: secret required: true schema: type: string requestBody: content: application/json: schema: oneOf: - type: object - additionalProperties: {} title: body type: object description: Pipedream event payload required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_service_integration.IntegrationResult' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Unauthorized '404': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Not Found tags: - Orgs /v1/orgs/{orgId}/integrations/shopify: post: description: Handle Shopify webhook event parameters: - description: Organization ID in: path name: orgId required: true schema: type: string - description: Webhook secret in: query name: secret required: true schema: type: string - description: Shopify topic (e.g., orders/create) in: header name: X-Shopify-Topic required: true schema: type: string - description: Shop domain (e.g., my-store.myshopify.com) in: header name: X-Shopify-Shop-Domain required: true schema: type: string - description: HMAC signature for payload verification in: header name: X-Shopify-Hmac-SHA256 required: true schema: type: string requestBody: content: application/json: schema: oneOf: - type: object - additionalProperties: {} title: body type: object description: Shopify webhook payload required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_service_integration.IntegrationResult' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Unauthorized '404': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Not Found tags: - Orgs /v1/orgs/{orgId}/integrations/telegram: post: description: Handle Telegram webhook update parameters: - description: Organization ID in: path name: orgId required: true schema: type: string - description: Webhook secret in: query name: secret required: true schema: type: string requestBody: content: application/json: schema: oneOf: - type: object - additionalProperties: {} title: body type: object description: Telegram update payload required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_service_integration.IntegrationResult' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Unauthorized '404': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Not Found tags: - Orgs /v1/orgs/{orgId}/integrations/webhook: post: description: Handle generic webhook trigger (secret identifies workflow) parameters: - description: Organization ID in: path name: orgId required: true schema: type: string - description: Per-workflow webhook secret (identifies the workflow) in: query name: secret required: true schema: type: string requestBody: content: application/json: schema: oneOf: - type: object - $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_service_integration.GenericWebhookPayload' summary: body description: Optional payload data description: Optional payload data responses: '200': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_service_integration.IntegrationResult' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Unauthorized '404': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Not Found tags: - Orgs /v1/orgs/{orgId}/invites: get: description: List pending invites for an organization parameters: - description: Organization ID in: path name: orgId required: true schema: type: string - description: Number of items (default 20, max 100) in: query name: limit schema: type: integer - description: Offset for pagination (default 0) in: query name: offset schema: type: integer responses: '200': content: application/json: schema: $ref: '#/components/schemas/ListOrgInvitesSuccessResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Bad Request tags: - Orgs /v1/orgs/{orgId}/members: get: description: List all members of an organization parameters: - description: Organization ID in: path name: orgId required: true schema: type: string - description: Number of items (default 20, max 100) in: query name: limit schema: type: integer - description: Offset for pagination (default 0) in: query name: offset schema: type: integer responses: '200': content: application/json: schema: $ref: '#/components/schemas/ListMembersSuccessResponse' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse' description: Bad Request tags: - Orgs components: schemas: github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ForEachLevel: properties: index: description: Current iteration index (0, 1, 2...) type: integer parentNodeId: description: For-each node ID (e.g., "for_each_send") type: string total: description: Total iterations (for progress tracking) type: integer type: object github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_service_integration.IntegrationResult: properties: action: description: '"triggered", "resumed", "skipped"' type: string eventId: description: Webhook event ID for audit type: string reason: description: If skipped, the reason type: string runIds: description: Multiple if fan-out (platform) or single (generic) items: type: string type: array uniqueItems: false type: object PaginatedData-github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity_OrganizationMember: properties: hasMore: type: boolean items: items: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.OrganizationMember' type: array uniqueItems: false limit: type: integer offset: type: integer type: object github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.OrganizationInvite: properties: createdAt: type: string expiresAt: type: string id: type: string invitedBy: type: string inviteeEmail: type: string inviteeUserId: type: string organizationId: type: string role: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.OrganizationRole' status: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.InviteStatus' updatedAt: type: string type: object github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.OrganizationMember: properties: createdAt: type: string id: type: string invitedBy: type: string organizationId: type: string role: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.OrganizationRole' updatedAt: type: string userId: type: string type: object github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.InviteStatus: enum: - pending - accepted - declined - expired type: string x-enum-varnames: - InviteStatusPending - InviteStatusAccepted - InviteStatusDeclined - InviteStatusExpired github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ForEachContext: description: For wait resume inside for-each properties: index: type: integer parentNodeId: description: 'Legacy fields kept for backward-compatible JSON deserialization. New code should only use Stack.' type: string stack: description: 'Stack holds nesting levels from outermost to innermost. Single-level for-each uses a stack of length 1.' items: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ForEachLevel' type: array uniqueItems: false total: type: integer type: object github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_service_integration.GenericWebhookPayload: properties: data: additionalProperties: {} type: object forEachContext: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ForEachContext' nodeId: description: For wait resume type: string runId: description: For wait resume type: string workflowId: type: string type: object github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.OrganizationRole: enum: - owner - developer type: string x-enum-varnames: - OrgRoleOwner - OrgRoleDeveloper PaginatedData-github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity_OrganizationInvite: properties: hasMore: type: boolean items: items: $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.OrganizationInvite' type: array uniqueItems: false limit: type: integer offset: type: integer type: object ListOrgInvitesSuccessResponse: properties: code: example: 200 type: integer data: $ref: '#/components/schemas/PaginatedData-github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity_OrganizationInvite' message: example: success type: string requestId: example: req_abc123 type: string type: object github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse: properties: code: type: integer details: items: {} type: array uniqueItems: false message: type: string requestId: type: string type: object ListMembersSuccessResponse: properties: code: example: 200 type: integer data: $ref: '#/components/schemas/PaginatedData-github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity_OrganizationMember' message: example: success type: string requestId: example: req_abc123 type: string type: object