{
  "service": "perdoo",
  "displayName": "Perdoo",
  "categories": [
    "Productivity",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Token",
      "placeholder": "perdoo_api_token",
      "description": "Perdoo API token sent as a Bearer token. Create it in Personal Settings > API Tokens: https://web.perdoo.com/settings/user/api-tokens."
    }
  ],
  "homepageUrl": "https://www.perdoo.com",
  "actions": [
    {
      "id": "perdoo.execute_graphql",
      "service": "perdoo",
      "name": "execute_graphql",
      "description": "Execute a JSON-friendly Perdoo GraphQL query or mutation.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "The GraphQL document to execute."
          },
          "variables": {
            "type": "object",
            "additionalProperties": {
              "description": "A variable."
            },
            "description": "GraphQL variables keyed by variable name."
          },
          "operationName": {
            "type": "string",
            "minLength": 1,
            "description": "The GraphQL operation name to execute."
          }
        },
        "additionalProperties": false,
        "required": [
          "query"
        ],
        "description": "A Perdoo GraphQL request payload."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "description": "The raw GraphQL data object returned by Perdoo."
          },
          "extensions": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A raw JSON object returned by Perdoo."
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ],
        "description": "The raw Perdoo GraphQL response data and extensions."
      }
    },
    {
      "id": "perdoo.get_goal",
      "service": "perdoo",
      "name": "get_goal",
      "description": "Retrieve one Perdoo goal by UUID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "A Perdoo UUID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input for retrieving one Perdoo goal."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "goal": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "A Perdoo UUID.",
                    "format": "uuid"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "STRATEGIC_PILLAR",
                      "KPI",
                      "OBJECTIVE",
                      "KEY_RESULT",
                      "INITIATIVE"
                    ],
                    "description": "The Perdoo goal type."
                  },
                  "name": {
                    "type": "string",
                    "description": "The goal name."
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "The goal description."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "private": {
                    "type": "boolean",
                    "description": "Whether the goal is private."
                  },
                  "currentValue": {
                    "anyOf": [
                      {
                        "type": "number",
                        "description": "The goal's current value."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "status": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "NO_STATUS",
                          "OFF_TRACK",
                          "NEEDS_ATTENTION",
                          "ON_TRACK",
                          "ACCOMPLISHED"
                        ],
                        "description": "The Perdoo commit status."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "stage": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "DRAFT",
                          "ACTIVE",
                          "CLOSED"
                        ],
                        "description": "The Perdoo objective stage."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "progress": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "description": "The goal progress percentage."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "archived": {
                    "type": "boolean",
                    "description": "Whether the goal is archived."
                  },
                  "metricUnit": {
                    "type": "string",
                    "description": "The metric unit configured for the goal."
                  },
                  "startDate": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "A date in YYYY-MM-DD format.",
                        "format": "date"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "endDate": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "A date in YYYY-MM-DD format.",
                        "format": "date"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "createdDate": {
                    "type": "string",
                    "description": "An ISO 8601 timestamp returned by Perdoo.",
                    "format": "date-time"
                  },
                  "lastEditedDate": {
                    "type": "string",
                    "description": "An ISO 8601 timestamp returned by Perdoo.",
                    "format": "date-time"
                  },
                  "company": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "A Perdoo UUID.",
                        "format": "uuid"
                      },
                      "name": {
                        "type": "string",
                        "description": "The company name."
                      }
                    },
                    "additionalProperties": true,
                    "required": [
                      "id",
                      "name"
                    ],
                    "description": "A compact Perdoo company."
                  },
                  "parent": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "A Perdoo UUID.",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string",
                            "description": "The goal name."
                          },
                          "type": {
                            "type": "string",
                            "enum": [
                              "STRATEGIC_PILLAR",
                              "KPI",
                              "OBJECTIVE",
                              "KEY_RESULT",
                              "INITIATIVE"
                            ],
                            "description": "The Perdoo goal type."
                          }
                        },
                        "additionalProperties": true,
                        "required": [
                          "id",
                          "name",
                          "type"
                        ],
                        "description": "A compact parent Perdoo goal."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "lead": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "A Perdoo UUID.",
                            "format": "uuid"
                          },
                          "email": {
                            "type": "string",
                            "description": "The user's email address.",
                            "format": "email"
                          },
                          "firstName": {
                            "anyOf": [
                              {
                                "type": "string",
                                "description": "The user's first name."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "lastName": {
                            "anyOf": [
                              {
                                "type": "string",
                                "description": "The user's last name."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "additionalProperties": true,
                        "required": [
                          "id",
                          "email"
                        ],
                        "description": "A compact Perdoo user."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "timeframe": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "A Perdoo UUID.",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string",
                            "description": "The timeframe name."
                          },
                          "startDate": {
                            "type": "string",
                            "description": "A date in YYYY-MM-DD format.",
                            "format": "date"
                          },
                          "endDate": {
                            "type": "string",
                            "description": "A date in YYYY-MM-DD format.",
                            "format": "date"
                          }
                        },
                        "additionalProperties": true,
                        "required": [
                          "id",
                          "name",
                          "startDate",
                          "endDate"
                        ],
                        "description": "A compact Perdoo timeframe."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1,
                        "description": "A Perdoo GraphQL pagination cursor."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "raw": {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "A raw JSON object returned by Perdoo."
                  }
                },
                "additionalProperties": true,
                "required": [
                  "id",
                  "type",
                  "name",
                  "private",
                  "archived",
                  "metricUnit",
                  "createdDate",
                  "lastEditedDate",
                  "company"
                ],
                "description": "A Perdoo goal."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "goal"
        ],
        "description": "A Perdoo goal lookup result."
      }
    },
    {
      "id": "perdoo.list_goals",
      "service": "perdoo",
      "name": "list_goals",
      "description": "List Perdoo goals with the documented GraphQL goal filters and cursor pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "first": {
            "type": "integer",
            "minimum": 1,
            "description": "The number of goals to return after the cursor."
          },
          "after": {
            "type": "string",
            "minLength": 1,
            "description": "A Perdoo GraphQL pagination cursor."
          },
          "type": {
            "type": "string",
            "enum": [
              "STRATEGIC_PILLAR",
              "KPI",
              "OBJECTIVE",
              "KEY_RESULT",
              "INITIATIVE"
            ],
            "description": "The Perdoo goal type."
          },
          "status": {
            "type": "string",
            "enum": [
              "NO_STATUS",
              "OFF_TRACK",
              "NEEDS_ATTENTION",
              "ON_TRACK",
              "ACCOMPLISHED"
            ],
            "description": "The Perdoo commit status."
          },
          "stage": {
            "type": "string",
            "enum": [
              "DRAFT",
              "ACTIVE",
              "CLOSED"
            ],
            "description": "The Perdoo objective stage."
          },
          "archived": {
            "type": "boolean",
            "description": "Whether to return archived goals."
          },
          "includeArchived": {
            "type": "boolean",
            "description": "Whether archived goals should be included."
          },
          "orderBy": {
            "type": "string",
            "minLength": 1,
            "description": "The Perdoo ordering expression."
          }
        },
        "additionalProperties": false,
        "description": "Input for listing Perdoo goals."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "goals": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "A Perdoo UUID.",
                  "format": "uuid"
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "STRATEGIC_PILLAR",
                    "KPI",
                    "OBJECTIVE",
                    "KEY_RESULT",
                    "INITIATIVE"
                  ],
                  "description": "The Perdoo goal type."
                },
                "name": {
                  "type": "string",
                  "description": "The goal name."
                },
                "description": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The goal description."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "private": {
                  "type": "boolean",
                  "description": "Whether the goal is private."
                },
                "currentValue": {
                  "anyOf": [
                    {
                      "type": "number",
                      "description": "The goal's current value."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "status": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "NO_STATUS",
                        "OFF_TRACK",
                        "NEEDS_ATTENTION",
                        "ON_TRACK",
                        "ACCOMPLISHED"
                      ],
                      "description": "The Perdoo commit status."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "stage": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "DRAFT",
                        "ACTIVE",
                        "CLOSED"
                      ],
                      "description": "The Perdoo objective stage."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "progress": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The goal progress percentage."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "archived": {
                  "type": "boolean",
                  "description": "Whether the goal is archived."
                },
                "metricUnit": {
                  "type": "string",
                  "description": "The metric unit configured for the goal."
                },
                "startDate": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "A date in YYYY-MM-DD format.",
                      "format": "date"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "endDate": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "A date in YYYY-MM-DD format.",
                      "format": "date"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdDate": {
                  "type": "string",
                  "description": "An ISO 8601 timestamp returned by Perdoo.",
                  "format": "date-time"
                },
                "lastEditedDate": {
                  "type": "string",
                  "description": "An ISO 8601 timestamp returned by Perdoo.",
                  "format": "date-time"
                },
                "company": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "A Perdoo UUID.",
                      "format": "uuid"
                    },
                    "name": {
                      "type": "string",
                      "description": "The company name."
                    }
                  },
                  "additionalProperties": true,
                  "required": [
                    "id",
                    "name"
                  ],
                  "description": "A compact Perdoo company."
                },
                "parent": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "A Perdoo UUID.",
                          "format": "uuid"
                        },
                        "name": {
                          "type": "string",
                          "description": "The goal name."
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "STRATEGIC_PILLAR",
                            "KPI",
                            "OBJECTIVE",
                            "KEY_RESULT",
                            "INITIATIVE"
                          ],
                          "description": "The Perdoo goal type."
                        }
                      },
                      "additionalProperties": true,
                      "required": [
                        "id",
                        "name",
                        "type"
                      ],
                      "description": "A compact parent Perdoo goal."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lead": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "A Perdoo UUID.",
                          "format": "uuid"
                        },
                        "email": {
                          "type": "string",
                          "description": "The user's email address.",
                          "format": "email"
                        },
                        "firstName": {
                          "anyOf": [
                            {
                              "type": "string",
                              "description": "The user's first name."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "lastName": {
                          "anyOf": [
                            {
                              "type": "string",
                              "description": "The user's last name."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "additionalProperties": true,
                      "required": [
                        "id",
                        "email"
                      ],
                      "description": "A compact Perdoo user."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "timeframe": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "A Perdoo UUID.",
                          "format": "uuid"
                        },
                        "name": {
                          "type": "string",
                          "description": "The timeframe name."
                        },
                        "startDate": {
                          "type": "string",
                          "description": "A date in YYYY-MM-DD format.",
                          "format": "date"
                        },
                        "endDate": {
                          "type": "string",
                          "description": "A date in YYYY-MM-DD format.",
                          "format": "date"
                        }
                      },
                      "additionalProperties": true,
                      "required": [
                        "id",
                        "name",
                        "startDate",
                        "endDate"
                      ],
                      "description": "A compact Perdoo timeframe."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "cursor": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1,
                      "description": "A Perdoo GraphQL pagination cursor."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "A raw JSON object returned by Perdoo."
                }
              },
              "additionalProperties": true,
              "required": [
                "id",
                "type",
                "name",
                "private",
                "archived",
                "metricUnit",
                "createdDate",
                "lastEditedDate",
                "company"
              ],
              "description": "A Perdoo goal."
            },
            "description": "Goals returned by Perdoo."
          },
          "pageInfo": {
            "type": "object",
            "properties": {
              "hasNextPage": {
                "type": "boolean",
                "description": "Whether another page exists after this page."
              },
              "hasPreviousPage": {
                "type": "boolean",
                "description": "Whether another page exists before this page."
              },
              "startCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "A Perdoo GraphQL pagination cursor."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "endCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "A Perdoo GraphQL pagination cursor."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false,
            "required": [
              "hasNextPage",
              "hasPreviousPage",
              "startCursor",
              "endCursor"
            ],
            "description": "Perdoo cursor pagination metadata."
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of matching goals."
          },
          "edgeCount": {
            "type": "integer",
            "description": "The number of returned edges."
          }
        },
        "additionalProperties": false,
        "required": [
          "goals",
          "pageInfo",
          "totalCount",
          "edgeCount"
        ],
        "description": "A page of Perdoo goals."
      }
    },
    {
      "id": "perdoo.upsert_commit",
      "service": "perdoo",
      "name": "upsert_commit",
      "description": "Create or update a Perdoo progress update for exactly one goal, key result, or KPI.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "goalId": {
            "type": "string",
            "description": "A Perdoo UUID.",
            "format": "uuid"
          },
          "keyResultId": {
            "type": "string",
            "description": "A Perdoo UUID.",
            "format": "uuid"
          },
          "kpiId": {
            "type": "string",
            "description": "A Perdoo UUID.",
            "format": "uuid"
          },
          "commitId": {
            "type": "string",
            "description": "A Perdoo UUID.",
            "format": "uuid"
          },
          "commitDate": {
            "type": "string",
            "description": "A date in YYYY-MM-DD format.",
            "format": "date"
          },
          "commitType": {
            "type": "string",
            "minLength": 1,
            "description": "The Perdoo commit type, such as MANUAL."
          },
          "value": {
            "type": "number",
            "description": "The progress value to submit."
          },
          "status": {
            "type": "string",
            "enum": [
              "NO_STATUS",
              "OFF_TRACK",
              "NEEDS_ATTENTION",
              "ON_TRACK",
              "ACCOMPLISHED"
            ],
            "description": "The Perdoo commit status."
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "description": "The progress update description."
          },
          "userId": {
            "type": "string",
            "description": "A Perdoo UUID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Input for creating or updating a Perdoo progress update.",
        "oneOf": [
          {
            "required": [
              "goalId"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "keyResultId"
                  ]
                },
                {
                  "required": [
                    "kpiId"
                  ]
                }
              ]
            }
          },
          {
            "required": [
              "keyResultId"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "goalId"
                  ]
                },
                {
                  "required": [
                    "kpiId"
                  ]
                }
              ]
            }
          },
          {
            "required": [
              "kpiId"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "goalId"
                  ]
                },
                {
                  "required": [
                    "keyResultId"
                  ]
                }
              ]
            }
          }
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "commit": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "A Perdoo UUID.",
                    "format": "uuid"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "The progress update description."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "commitType": {
                    "type": "string",
                    "description": "The commit type returned by Perdoo."
                  },
                  "createdDate": {
                    "type": "string",
                    "description": "An ISO 8601 timestamp returned by Perdoo.",
                    "format": "date-time"
                  },
                  "commitDate": {
                    "type": "string",
                    "description": "A date in YYYY-MM-DD format.",
                    "format": "date"
                  },
                  "value": {
                    "type": "number",
                    "description": "The submitted progress value."
                  },
                  "delta": {
                    "type": "number",
                    "description": "The change in value produced by the commit."
                  },
                  "valueBefore": {
                    "type": "number",
                    "description": "The previous value before the commit."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "NO_STATUS",
                      "OFF_TRACK",
                      "NEEDS_ATTENTION",
                      "ON_TRACK",
                      "ACCOMPLISHED"
                    ],
                    "description": "The Perdoo commit status."
                  },
                  "statusBefore": {
                    "type": "string",
                    "enum": [
                      "NO_STATUS",
                      "OFF_TRACK",
                      "NEEDS_ATTENTION",
                      "ON_TRACK",
                      "ACCOMPLISHED"
                    ],
                    "description": "The Perdoo commit status."
                  },
                  "keyResult": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "A Perdoo UUID.",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string",
                            "description": "The target name."
                          },
                          "currentValue": {
                            "anyOf": [
                              {
                                "type": "number",
                                "description": "The target's current value."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "additionalProperties": true,
                        "required": [
                          "id",
                          "name"
                        ],
                        "description": "A compact Perdoo progress target."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "kpi": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "A Perdoo UUID.",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string",
                            "description": "The target name."
                          },
                          "currentValue": {
                            "anyOf": [
                              {
                                "type": "number",
                                "description": "The target's current value."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "additionalProperties": true,
                        "required": [
                          "id",
                          "name"
                        ],
                        "description": "A compact Perdoo progress target."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "goal": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "A Perdoo UUID.",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string",
                            "description": "The target name."
                          },
                          "type": {
                            "type": "string",
                            "enum": [
                              "STRATEGIC_PILLAR",
                              "KPI",
                              "OBJECTIVE",
                              "KEY_RESULT",
                              "INITIATIVE"
                            ],
                            "description": "The Perdoo goal type."
                          },
                          "currentValue": {
                            "anyOf": [
                              {
                                "type": "number",
                                "description": "The target's current value."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "additionalProperties": true,
                        "required": [
                          "id",
                          "name",
                          "type"
                        ],
                        "description": "A compact Perdoo goal progress target."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "user": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "A Perdoo UUID.",
                            "format": "uuid"
                          },
                          "email": {
                            "type": "string",
                            "description": "The user's email address.",
                            "format": "email"
                          },
                          "firstName": {
                            "anyOf": [
                              {
                                "type": "string",
                                "description": "The user's first name."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "lastName": {
                            "anyOf": [
                              {
                                "type": "string",
                                "description": "The user's last name."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "additionalProperties": true,
                        "required": [
                          "id",
                          "email"
                        ],
                        "description": "A compact Perdoo user."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": true,
                "required": [
                  "id",
                  "commitType",
                  "createdDate",
                  "commitDate",
                  "value",
                  "delta",
                  "valueBefore",
                  "status",
                  "statusBefore"
                ],
                "description": "A Perdoo progress update."
              },
              {
                "type": "null"
              }
            ]
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "field": {
                  "type": "string",
                  "description": "The field that failed validation."
                },
                "messages": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "A validation message."
                  },
                  "description": "Validation messages returned by Perdoo."
                }
              },
              "additionalProperties": false,
              "required": [
                "field",
                "messages"
              ],
              "description": "A Perdoo mutation validation error."
            },
            "description": "Mutation validation errors returned by Perdoo."
          }
        },
        "additionalProperties": false,
        "required": [
          "commit",
          "errors"
        ],
        "description": "The Perdoo upsertCommit mutation result."
      }
    }
  ]
}
