### Get GraphQL Schema
Source: https://docs.skedulo.com/developer-guides/deskless-productivity-cloud/use-graphql/get-started-with-graphql
Retrieve the full GraphQL Schema Definition Language specification for your Skedulo tenant. This schema outlines the available queries and mutations.
```APIDOC
## GET /graphql/schema
### Description
Retrieves the GraphQL schema definition for the Skedulo tenant.
### Method
GET
### Endpoint
/graphql/schema
### Parameters
#### Header Parameters
- **Authorization** (string) - Required - Bearer token for authentication (e.g., `Bearer $API_TOKEN`)
### Request Example
```bash
curl -X GET https://api.skedulo.com/graphql/schema -H "Authorization: Bearer $API_TOKEN"
```
### Response
#### Success Response (200)
- **schema** (string) - The GraphQL schema in Schema Definition Language format.
#### Response Example
```json
{
"data": "type Query { ... } type Mutation { ... }"
}
```
```
--------------------------------
### GraphQL Queries for Skedulo Jobs and Products
Source: https://docs.skedulo.com/docs/customization/skedulo-sdk/library/library-getting-started
Defines GraphQL queries for fetching job details with associated products and for retrieving product information. These queries are used for data retrieval within Skedulo libraries.
```graphql
query fetchJobsWithJobProducts($filter: EQLQueryFilterJobs!) {
jobs(filter: $filter) {
edges {
node {
UID
Name
JobProducts {
UID
Qty
Name
JobId
ProductId
}
}
}
}
}
query fetchProducts($orderBy: EQLOrderByClauseProducts, $filter: EQLQueryFilterProducts, $offset: NonNegativeInt) {
page: products(orderBy: $orderBy, filter: $filter, offset: $offset) {
totalCount
edges {
node {
UID
Name
Description
ProductCode
}
}
}
}
```
--------------------------------
### GraphQL - Create Job
Source: https://docs.skedulo.com/developer-guides/getting-started/quickstart
Creates a new job using the `insertJob` GraphQL mutation. Mandatory fields include `Duration` and `RegionId`. `Start` and `End` are required for scheduled jobs and must be in ISO8601 format.
```APIDOC
## GraphQL - Create Job
### Description
Creates a new job using the `insertJob` GraphQL mutation. Mandatory fields include `Duration` and `RegionId`. `Start` and `End` are required for scheduled jobs and must be in ISO8601 format.
### Method
POST
### Endpoint
/graphql
### Parameters
#### Query Parameters
None
#### Request Body
##### mutation createJob
- **input** (Object) - Required - Input object for creating a job.
- **Duration** (Int) - Required - The number of minutes allocated to complete the job.
- **RegionId** (String) - Required - The UID of the region in which the job will be assigned.
- **Start** (String) - Optional - The start date and time in ISO8601 format.
- **End** (String) - Optional - The end date and time in ISO8601 format.
- **Description** (String) - Optional - A description for the job.
### Request Example
```json
mutation createJob{
schema {
insertJobs(input: {
Duration: 60
RegionId: "000396a9-ac46-4412-b015-b212af205f46"
Start: "2021-09-10T06:00:00.000Z"
End: "2021-09-10T07:00:00.000Z"
Description: "This is a new job created using GraphQL"
})
}
}
```
### Response
#### Success Response (200)
- **data.schema.insertJobs** (String) - The UID of the newly created job.
#### Response Example
```json
{
"data": {
"schema": {
"insertJobs": "00149459-5115-4c86-8272-eb687d67c293"
}
}
}
```
```
--------------------------------
### Create a Skedulo Job using GraphQL
Source: https://docs.skedulo.com/developer-guides/getting-started/quickstart
Creates a new job in Skedulo using the `insertJobs` GraphQL mutation. Requires `Duration` and `RegionId`. Optional fields like `Start`, `End` (in ISO8601 format), and `Description` can be included. The response provides the `UID` of the created job.
```graphql
mutation createJob{
schema {
insertJobs(input: {
Duration: 60
RegionId: "000396a9-ac46-4412-b015-b212af205f46"
Start: "2021-09-10T06:00:00.000Z"
End: "2021-09-10T07:00:00.000Z"
Description: "This is a new job created using GraphQL"
})
}
}
```
```json
{
"data": {
"schema": {
"insertJobs": "00149459-5115-4c86-8272-eb687d67c293"
}
}
}
```
--------------------------------
### Retrieve GraphQL Schema using cURL
Source: https://docs.skedulo.com/developer-guides/deskless-productivity-cloud/use-graphql/get-started-with-graphql
This snippet demonstrates how to fetch the complete GraphQL schema definition for your Skedulo tenant using a cURL command. It requires an API access token for authentication and targets the `/graphql/schema` endpoint. The response includes all standard and custom objects, fields, and supports the `GeoLocation` scalar type.
```shell
curl -X GET https://api.skedulo.com/graphql/schema -H "Authorization: Bearer $API_TOKEN"
```
--------------------------------
### Get Timezone for a Location (HTTP GET Request)
Source: https://docs.skedulo.com/developer-guides/use-and-manage-location-information/address-geocoding-and-autocompletion/get-timezone-information
This example demonstrates how to make an HTTP GET request to the /geoservices/timezone endpoint to retrieve timezone details for a specific location and timestamp. It requires the base URL, location coordinates (latitude, longitude), and a Unix timestamp.
```http
https:///geoservices/timezone?location=-37.839485%2c144.925550×tamp=1680076800
```
--------------------------------
### Skedulo CLI Webhook List Output Example (Bash)
Source: https://docs.skedulo.com/developer-guides/integration-and-automation/webhooks-and-triggered-actions/webhooks/create-a-webhook
An example of the output from the `sked artifacts webhook list` command, showing a table with webhook details like name, type, and URL.
```bash
✔ Fetching Webhook list...
name type url
────────────────── ─────── ───────────────────────
my-webhook graphql https://my-api/callback
```
--------------------------------
### Start Skedulo Web Extension Development Server
Source: https://docs.skedulo.com/developer-guides/customize-and-extend/skedulo-web-extensions/web-extensions-with-cli
Initiates the local development server for a web extension. This command serves the extension and allows for live recompilation and testing. It requires the path to your extension's source code.
```bash
sked web-extension dev location-of-extension-code
```
--------------------------------
### Authentication - Example Request
Source: https://docs.skedulo.com/skedulo-api
This example demonstrates how to authenticate with the Skedulo API using a Bearer token. The access token is obtained from the Skedulo web app and included in the Authorization header.
```APIDOC
## GET /auth/whoami
### Description
Retrieves information about the authenticated user or token.
### Method
GET
### Endpoint
https://api.skedulo.com/auth/whoami
### Parameters
#### Headers
- **Authorization** (string) - Required - Bearer token obtained from Skedulo web app (e.g., `Bearer YOUR_API_TOKEN`)
- **content-type** (string) - Required - `application/json`
### Request Example
```bash
curl -X GET https://api.skedulo.com/auth/whoami \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik9ESkNORFE0TkRJMVJUTkJNekE1TlRFNVJqVTFORGxDUXpjME9EZEJOVEF3T1RjNE1rVkZSUSJ9.eyJodHRwczovL2FwaS5za2VkdWxvLmNvbS92ZW5kb...-dpYZm_8YuaUYTnMrS4Fs3fQTDxM0oEkt9CWWJxPQTOv3l3pjp3sgDeuRvzYcaFZuoVTVLPYNidL9Pc5gPMrsXpTxOJL3nMF-2GmJJ5YHAXgG2cQc9MmL74u7IsGbQ-qg"
-H "content-type: application/json"
```
### Response
#### Success Response (200)
- **data** (object) - Contains user or token information.
- **user** (object) - User details.
- **id** (string) - User ID.
- **name** (string) - User name.
- **email** (string) - User email.
- **permissions** (array) - List of user permissions.
#### Response Example
```json
{
"data": {
"user": {
"id": "user-123",
"name": "John Doe",
"email": "john.doe@example.com"
},
"permissions": [
"read:jobs",
"write:jobs"
]
}
}
```
```
--------------------------------
### Execute GraphQL Queries and Mutations
Source: https://docs.skedulo.com/developer-guides/deskless-productivity-cloud/use-graphql/get-started-with-graphql
Perform GraphQL queries and mutations against the Skedulo API. This endpoint accepts JSON-encoded requests and returns data and errors in JSON format.
```APIDOC
## POST /graphql/graphql
### Description
Executes GraphQL queries and mutations against the Skedulo API.
### Method
POST
### Endpoint
/graphql/graphql
### Parameters
#### Header Parameters
- **Authorization** (string) - Required - Bearer token for authentication (e.g., `Bearer $API_TOKEN`)
- **Content-Type** (string) - Required - Must be `application/json`
#### Request Body
- **query** (string) - Required - The GraphQL query string.
- **variables** (object) - Optional - Variables to be used in the query.
### Request Example
```json
{
"query": "query GetUsers { users { id name } }",
"variables": {}
}
```
### Response
#### Success Response (200)
- **data** (object) - The result of the GraphQL query or mutation.
- **errors** (array) - An array of errors, if any occurred during execution.
#### Response Example
```json
{
"data": {
"users": [
{
"id": "user-123",
"name": "John Doe"
}
]
}
}
```
```
--------------------------------
### Update Job Data with GraphQL Mutation
Source: https://docs.skedulo.com/developer-guides/getting-started/quickstart
Updates an existing job object in the schema using the `updateJobs` GraphQL mutation. This example adds an address to a job. Requires the job UID and the fields to update.
```graphql
mutation updateJobs {
schema {
updateJobs(input: {
UID: "00149459-5115-4c86-8272-eb687d67c293",
Address: "47 Warner St, Fortitude Valley QLD 4006, Australia",
})
}
}
```
--------------------------------
### GraphQL - Create Resource
Source: https://docs.skedulo.com/developer-guides/getting-started/quickstart
Creates a new resource using the `insertResources` GraphQL mutation. Mandatory fields include `Name` and `RegionId`. Optional fields include `ResourceType`, `NotificationType`, `MobilePhone`, and `CountryCode`.
```APIDOC
## GraphQL - Create Resource
### Description
Creates a new resource using the `insertResources` GraphQL mutation. Mandatory fields include `Name` and `RegionId`. Optional fields include `ResourceType`, `NotificationType`, `MobilePhone`, and `CountryCode`.
### Method
POST
### Endpoint
/graphql
### Parameters
#### Query Parameters
None
#### Request Body
##### mutation createResources
- **input** (Object) - Required - Input object for creating a resource.
- **Name** (String) - Required - The name of the resource.
- **PrimaryRegionId** (String) - Required - The UID of the region where the resource will be working.
- **ResourceType** (String) - Optional - The type of resource (e.g., "Person").
- **NotificationType** (String) - Optional - The preferred notification type (e.g., "sms", "push").
- **MobilePhone** (String) - Optional - The mobile phone number of the resource.
- **CountryCode** (String) - Optional - The country code for the mobile phone number.
### Request Example
```json
mutation createResources {
schema {
insertResources(input: {
Name: "Robert Resource"
PrimaryRegionId: "000396a9-ac46-4412-b015-b212af205f46",
ResourceType: "Person",
NotificationType: "sms",
MobilePhone: "0400123456",
CountryCode: "AU"
})
}
}
```
### Response
#### Success Response (200)
- **data.schema.insertResources** (String) - The UID of the newly created resource.
#### Response Example
```json
{
"data": {
"schema": {
"insertResources": "0005310d-4383-40f0-a1f2-684c5e93cdbf"
}
}
}
```
```
--------------------------------
### Webhook Trigger Examples
Source: https://docs.skedulo.com/developer-guides/integration-and-automation/webhooks-and-triggered-actions/webhooks/create-a-webhook
Examples of webhook responses when creating and updating a job.
```APIDOC
## POST /webhooks/job/create
### Description
This endpoint is triggered when a new job is created. It logs the job details to a listening service.
### Method
POST
### Endpoint
`/webhooks/job/create`
### Request Body
(Implicitly sent by Skedulo system)
### Request Example
(GraphQL query to create a job)
### Response
#### Success Response (200)
Returns the details of the created job as received by the webhook.
#### Response Example
```json
{
"headers": {
"user-agent": "Skedulo-Webhook",
"skedulo-webhook-id": "9849cceb-c426-488b-89dc-6ff02b33802d",
"skedulo-request-id": "317cc297-c9cb-41e5-a741-366b3724cb8e",
"content-length": "182",
"content-type": "application/json; charset=UTF-8",
"accept-encoding": "gzip, deflate",
"host": "b14b2804.ngrok.io",
"accept": "*/*",
"x-forwarded-proto": "https",
"x-forwarded-for": "34.215.60.60"
},
"body": [
{
"data": {
"schemaJobs": {
"data": {
"UID": "00145d1e-974a-4f97-9cd7-7cd280f824a8",
"Duration": 60
},
"previous": {
"Duration": 60
},
"operation": "INSERT",
"timestamp": "2019-07-02T03:29:35.969Z"
}
}
}
]
}
```
## POST /webhooks/job/update
### Description
This endpoint is triggered when a job is updated. It logs the updated job details to a listening service.
### Method
POST
### Endpoint
`/webhooks/job/update`
### Request Body
(Implicitly sent by Skedulo system)
### Request Example
(GraphQL query to update a job)
### Response
#### Success Response (200)
Returns the details of the updated job as received by the webhook.
#### Response Example
```json
{
"headers": {
"user-agent": "Skedulo-Webhook",
"skedulo-webhook-id": "9849cceb-c426-488b-89dc-6ff02b33802d",
"skedulo-request-id": "fdf22ac0-b6d5-4453-9bfa-9735c7e2cdde",
"content-length": "182",
"content-type": "application/json; charset=UTF-8",
"accept-encoding": "gzip, deflate",
"host": "b14b2804.ngrok.io",
"accept": "*/*",
"x-forwarded-proto": "https",
"x-forwarded-for": "34.215.60.60"
},
"body": [
{
"data": {
"schemaJobs": {
"data": {
"UID": "00145d1e-974a-4f97-9cd7-7cd280f824a8",
"Duration": 30
},
"previous": {
"Duration": 60
},
"operation": "UPDATE",
"timestamp": "2019-07-02T03:31:27.970Z"
}
}
}
]
}
```
```
--------------------------------
### Create Product Mutation
Source: https://docs.skedulo.com/developer-guides/deskless-productivity-cloud/interacting-with-apis/graphiql-connected-page
This section describes the GraphQL mutation to create a new product and the required input variables.
```APIDOC
## POST /graphql
### Description
Use this GraphQL mutation to create a new product in the system. The mutation requires an input object containing the details of the product to be created.
### Method
POST
### Endpoint
/graphql
### Parameters
#### Query Parameters
None
#### Request Body
##### Mutation: `createProduct`
- **input** (NewProducts!) - Required - The input object containing the product details.
- **Name** (String!) - Required - The name of the product.
- **Description** (String) - Optional - A description for the product.
- **ProductCode** (String!) - Required - The unique code for the product.
- **IsActive** (Boolean) - Optional - Whether the product is active.
### Request Example
```graphql
mutation createProduct($input: NewProducts!) {
schema {
insertProducts(input: $input)
}
}
```
### Query Variables Example
```json
{
"input": {
"Name": "New Product",
"Description": "This is a new product",
"ProductCode": "P-1",
"IsActive": true
}
}
```
### Response
#### Success Response (200)
- **data** (Object) - Contains the result of the mutation.
- **schema** (Object) - The schema object.
- **insertProducts** (String) - The UID of the newly created product.
#### Response Example
```json
{
"data": {
"schema": {
"insertProducts": "001d7f7e-e1be-464f-9184-990525ad2096"
}
}
}
```
```
--------------------------------
### GraphQL Introspection: Get Type Information (Jobs)
Source: https://docs.skedulo.com/developer-guides/deskless-productivity-cloud/use-graphql/graphql-queries
This introspection query retrieves detailed information about a specific GraphQL type, 'Jobs' in this example. It returns the type's name and kind, aiding in schema exploration.
```graphql
{
"data": {
"__type": {
"name": "Jobs",
"kind": "OBJECT"
}
}
}
```
--------------------------------
### Create Webhooks Directory and Install ngrok - Bash
Source: https://docs.skedulo.com/developer-guides/integration-and-automation/webhooks-and-triggered-actions/webhooks/create-a-webhook
Creates a new webhooks folder and navigates into it for local webhook development and testing. This directory will contain ngrok and the HTTP server configuration for receiving webhook payloads.
```bash
mkdir webhooks && cd webhooks
```
--------------------------------
### POST /optimization/schedule - Using Resources Object
Source: https://docs.skedulo.com/developer-guides/manage-and-schedule-work/optimization-of-schedules/optimize-vs-suggest/optimized-scheduling-using-the-api
This example demonstrates how to use the `resources` object in the request body for the `/optimization/schedule` endpoint. The `resources` object allows you to specify individual resource IDs and their custom working hours (start and end timestamps), overriding their default availability.
```APIDOC
## POST /optimization/schedule
### Description
Schedules jobs for resources, allowing for custom working hours overrides using the `resources` object.
### Method
POST
### Endpoint
/optimization/schedule
### Parameters
#### Request Body
- **jobIds** (array of strings) - Required - An array of job IDs to be scheduled.
- **resources** (object) - Required - An object where keys are resource IDs and values are arrays of working hour objects. Each working hour object should have `start` and `end` timestamps.
- **resourceId** (string) - The ID of the resource.
- **workingHours** (array of objects) - An array of objects, each defining a working period with `start` and `end` timestamps.
- **start** (string) - The start timestamp of the working period (ISO 8601 format).
- **end** (string) - The end timestamp of the working period (ISO 8601 format).
- **scheduleStart** (integer) - Required - The start timestamp for the scheduling period (Unix epoch milliseconds).
- **scheduleEnd** (integer) - Required - The end timestamp for the scheduling period (Unix epoch milliseconds).
- **timeZone** (string) - Required - The time zone for the scheduling period (e.g., "Australia/Brisbane").
- **schedulingOptions** (object) - Optional - Options to configure the scheduling behavior.
- **respectSchedule** (boolean) - Whether to respect existing resource schedules.
- **ignoreTravelTimes** (boolean) - Whether to ignore travel times between jobs.
- **ignoreTravelTimeFirstJob** (boolean) - Whether to ignore travel time for the first job.
- **ignoreTravelTimeLastJob** (boolean) - Whether to ignore travel time for the last job.
- **jobTimeAsTimeConstraint** (boolean) - Whether to treat job duration as a time constraint.
- **preferJobTimeOverTimeConstraint** (boolean) - Whether to prioritize job time over other time constraints.
- **balanceWorkload** (boolean) - Whether to balance workload among resources.
- **minimizeResources** (boolean) - Whether to minimize the number of resources used.
- **snapUnit** (integer) - Unit in minutes for snapping schedule times.
- **padding** (integer) - Padding in minutes to add to job durations.
### Request Example
```json
{
"jobIds": [
"001406d4-51fd-4da7-8960-1e71429e1974",
"0014c5a0-05eb-4d16-8381-f63d17bda9d6",
"00142eaa-a8f3-4e90-942b-3233fff67936"
],
"resources": {
"0005dfa7-c49e-481c-a25c-6daef8e3d918": [],
"0005094d-dae5-4cbb-ad7d-db78d3735e21": [{ "start": "2019-04-17T04:00:30.000Z", "end": "2019-04-17T0:20:30.000Z" }]
},
"scheduleStart": 1555475530486,
"scheduleEnd": 1555509599999,
"timeZone": "Australia/Brisbane",
"schedulingOptions": {
"respectSchedule": false,
"ignoreTravelTimes": true,
"ignoreTravelTimeFirstJob": false,
"ignoreTravelTimeLastJob": false,
"jobTimeAsTimeConstraint": true,
"preferJobTimeOverTimeConstraint": true,
"balanceWorkload": false,
"minimizeResources": false,
"snapUnit": 0,
"padding": 0
}
}
```
### Response
#### Success Response (200)
- **schedule** (array of objects) - An array of scheduled job assignments.
- **jobId** (string) - The ID of the job.
- **resourceId** (string) - The ID of the resource assigned to the job.
- **start** (string) - The start time of the job assignment (ISO 8601 format).
- **end** (string) - The end time of the job assignment (ISO 8601 format).
- **travelTime** (integer) - The calculated travel time in minutes to this job.
#### Response Example
```json
{
"schedule": [
{
"jobId": "001406d4-51fd-4da7-8960-1e71429e1974",
"resourceId": "0005dfa7-c49e-481c-a25c-6daef8e3d918",
"start": "2019-04-17T08:00:00.000Z",
"end": "2019-04-17T09:00:00.000Z",
"travelTime": 0
}
]
}
```
```
--------------------------------
### Query All Skedulo Jobs using GraphQL
Source: https://docs.skedulo.com/developer-guides/getting-started/quickstart
Retrieves a list of all jobs in the Skedulo org using a GraphQL query. This query fetches the `Name` and `Description` for each job, presented in an edge-node structure.
```graphql
query allJobs {
jobs {
edges {
node{
Name
Description
}
}
}
}
```
--------------------------------
### Initialize Empty Skedulo Package Configuration with sked.pkg.json
Source: https://docs.skedulo.com/developer-guides/create-and-manage-deployments/create-and-deploy-packages/overview-of-package-components
JSON configuration file for a new Skedulo package with no components. Specifies package version, name, summary, and an empty components object. This file is the main package configuration that lists all components to be built and deployed as a single bundle.
```json
{
"version":"1",
"name":"NewPackage",
"summary":"New Package",
"components":{}
}
```
--------------------------------
### Retrieve Batch Optimization Runs
Source: https://docs.skedulo.com/developer-guides/manage-and-schedule-work/optimization-of-schedules/create-a-scheduled-optimization
This JSON represents the response from the GET /optimization/run endpoint, detailing multiple optimization runs associated with a schedule ID. It includes information like save status, user details, start times, and summaries.
```json
{
"paging": {
"limit": 10,
"total": 2
},
"result": [
{
"autoSaved": false,
"savedByUserId": "user-1",
"savedByDate": "2022-02-15T19:03:00Z",
"saveState": "saved",
"start": "2022-08-18T19:00:00Z",
"status": "complete",
"scheduleId": "a15c285f-2c69-4a3c-9b9b-c9a8c5252db6",
"createdByUserId": "user-1",
"label": "label-1",
"optimizationType": "pvrp",
"completedAt": "2022-02-15T19:02:00Z",
"summary": {
"totalPlannedJobs": 3,
"totalScheduledJobs": 3
},
"evaluateOnly": false,
"id": "20ecb249-8331-491f-9049-565a2252df76"
},
{
"autoSaved": false,
"saveState": "error",
"errors": [
{
"message": "error-1"
}
],
"start": "2022-08-18T19:00:00Z",
"status": "failed",
"scheduleId": "a15c285f-2c69-4a3c-9b9b-c9a8c5252db6",
"createdByUserId": "user-1",
"label": "label-1",
"optimizationType": "pvrp",
"completedAt": "2022-02-15T19:02:00Z",
"summary": {
"totalPlannedJobs": 3,
"totalScheduledJobs": 3
},
"evaluateOnly": false,
"id": "20ecb249-8331-491f-9049-565a2252df76"
}
]
}
```
--------------------------------
### Skedulo Library Exports for GraphQL and Types
Source: https://docs.skedulo.com/docs/customization/skedulo-sdk/library/library-getting-started
Exports DocumentNodes for GraphQL execution, converted types representing query data, and raw generated types from the Skedulo server schema. This centralizes imports for library usage.
```typescript
// Converted types representing data available in queries
export { JobProduct, Product, JobProductsManagedData, JobProductCacheData, JobProductsUnmanagedData } from './custom-types'
// Documents for execution
export { fetchJobsWithJobProducts, fetchProducts } from './queries/queries.graphql'
// Raw generated types for other use (raw schema types from server)
export { JobProducts, NewJobProducts, UpdateJobProducts, FetchJobsWithJobProducts, FetchProducts } from './__graphql/graphql'
```
--------------------------------
### UI Definition for Static Product Selector
Source: https://docs.skedulo.com/developer-guides/customize-and-extend-mobile/skedulo-plus-extensions/mex-ui-components/page-components/flat-page-components/selector-editor
Example `ui_def.json` configuration for a select editor displaying a static list of products. This setup allows users to tap the field to select a product.
```json
{
"components": [
{
"type": "selectEditor",
"label": "Select Product",
"hint": "SelectProductHint",
"options": [
{ "value": "1", "label": "Product A" },
{ "value": "2", "label": "Product B" },
{ "value": "3", "label": "Product C" }
]
}
]
}
```
--------------------------------
### Retrieve Webhooks via CLI
Source: https://docs.skedulo.com/developer-guides/integration-and-automation/webhooks-and-triggered-actions/webhooks/create-a-webhook
Instructions for listing and getting individual webhooks using the Skedulo CLI.
```APIDOC
## Skedulo CLI Webhook Commands
### List Webhooks
#### Description
Fetches a list of all configured webhooks.
#### Command
```bash
sked artifacts webhook list
```
#### Response Example
```
✔ Fetching Webhook list...
name type url
────────────────── ─────── ───────────────────────
my-webhook graphql https://my-api/callback
```
### Get Specific Webhook
#### Description
Retrieves details for a specific webhook by its name.
#### Command
```bash
sked artifacts webhook get --name
```
#### Example Command
```bash
sked artifacts webhook get --name my-webhook
```
#### Response
(Returns detailed information about the specified webhook, similar to the API response structure for a single webhook.)
```
--------------------------------
### GraphQL Subscription Error Response
Source: https://docs.skedulo.com/developer-guides/deskless-productivity-cloud/use-graphql/graphql-subscriptions
An example of an error response from the GraphQL subscription server. This 'error' message type is returned when there is an issue with a 'start' message, such as a syntax error in the query or an invalid field name. The 'payload' contains details about the errors encountered.
```json
{
"type": "error",
"id": "2",
"payload": {
"data": null,
"errors": [
{
"message": "Cannot query field 'UIDs' on type 'SchemaSubscriptionJobs'. Did you mean 'UID'? (line 6, column 7):\n UIDs\n ^",
"locations": [
{
"line": 6,
"column": 7
}
]
}
]
}
}
```
--------------------------------
### GraphQL Query to Fetch Regions
Source: https://docs.skedulo.com/developer-guides/deskless-productivity-cloud/use-graphql/graphiql
An example GraphQL query to retrieve region information, including unique identifiers (UID) and names. This query can be executed within the GraphiQL interface to test data retrieval from the Skedulo backend.
```graphql
query fetchRegions {
regions {
edges {
node {
UID
Name
}
}
}
}
```