{
  "service": "sevdesk",
  "displayName": "sevdesk",
  "categories": [
    "Finance",
    "Productivity"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Token",
      "placeholder": "32-character hex token",
      "description": "sevdesk API token sent as the Authorization header value. Get it from the Authentication and Authorization section of the official sevdesk API docs: https://api.sevdesk.de/#section/Authentication-and-Authorization"
    }
  ],
  "homepageUrl": "https://sevdesk.com",
  "actions": [
    {
      "id": "sevdesk.create_contact",
      "service": "sevdesk",
      "name": "create_contact",
      "description": "Create a new sevdesk contact using the official contact payload fields.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "description": "The organization name. When set, sevdesk treats the contact as an organization."
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The sevdesk contact status code, such as 100, 500, or 1000."
              },
              {
                "type": "null"
              }
            ]
          },
          "customerNumber": {
            "anyOf": [
              {
                "type": "string",
                "description": "The customer number to store on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "parent": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "The referenced sevdesk contact identifier."
                  },
                  "objectName": {
                    "const": "Contact",
                    "type": "string",
                    "description": "The sevdesk model name for a contact reference."
                  }
                },
                "additionalProperties": false,
                "description": "A sevdesk contact reference object."
              },
              {
                "type": "null"
              }
            ]
          },
          "surename": {
            "anyOf": [
              {
                "type": "string",
                "description": "The first name for a person contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "familyname": {
            "anyOf": [
              {
                "type": "string",
                "description": "The last name for a person contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "titel": {
            "anyOf": [
              {
                "type": "string",
                "description": "The non-academic title for the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "category": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "The referenced sevdesk category identifier."
              },
              "objectName": {
                "const": "Category",
                "type": "string",
                "description": "The sevdesk model name for a category reference."
              }
            },
            "additionalProperties": false,
            "description": "A sevdesk contact category reference object."
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "description": "The free-form description stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "academicTitle": {
            "anyOf": [
              {
                "type": "string",
                "description": "The academic title for the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "gender": {
            "anyOf": [
              {
                "type": "string",
                "description": "The gender value for the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "name2": {
            "anyOf": [
              {
                "type": "string",
                "description": "The second name for a person contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "birthday": {
            "anyOf": [
              {
                "type": "string",
                "description": "The birthday for a person contact in YYYY-MM-DD format.",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "vatNumber": {
            "anyOf": [
              {
                "type": "string",
                "description": "The VAT number stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "bankAccount": {
            "anyOf": [
              {
                "type": "string",
                "description": "The bank account number (IBAN) stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "bankNumber": {
            "anyOf": [
              {
                "type": "string",
                "description": "The bank number stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultCashbackTime": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The default cashback time in days for this contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultCashbackPercent": {
            "anyOf": [
              {
                "type": "number",
                "description": "The default cashback percent for this contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultTimeToPay": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The default time to pay in days for this contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "taxNumber": {
            "anyOf": [
              {
                "type": "string",
                "description": "The tax number stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "taxOffice": {
            "anyOf": [
              {
                "type": "string",
                "description": "The tax office stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "exemptVat": {
            "anyOf": [
              {
                "type": "boolean",
                "description": "Whether the contact is exempt from VAT."
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultDiscountAmount": {
            "anyOf": [
              {
                "type": "number",
                "description": "The default discount amount applied to this contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultDiscountPercentage": {
            "anyOf": [
              {
                "type": "boolean",
                "description": "Whether the default discount amount is interpreted as a percentage."
              },
              {
                "type": "null"
              }
            ]
          },
          "buyerReference": {
            "anyOf": [
              {
                "type": "string",
                "description": "The buyer reference stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "governmentAgency": {
            "anyOf": [
              {
                "type": "boolean",
                "description": "Whether the contact represents a government agency."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "category"
        ],
        "description": "Input parameters for creating a sevdesk contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A sevdesk contact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "contact"
        ],
        "description": "The normalized sevdesk contact creation response."
      }
    },
    {
      "id": "sevdesk.delete_contact",
      "service": "sevdesk",
      "name": "delete_contact",
      "description": "Delete a sevdesk contact by its identifier.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "minimum": 1,
            "description": "The sevdesk contact identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "contactId"
        ],
        "description": "Input parameters for deleting a sevdesk contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "deleted": {
            "type": "boolean",
            "description": "Whether the requested contact was deleted successfully."
          }
        },
        "additionalProperties": false,
        "required": [
          "deleted"
        ],
        "description": "The normalized sevdesk contact deletion response."
      }
    },
    {
      "id": "sevdesk.get_contact",
      "service": "sevdesk",
      "name": "get_contact",
      "description": "Get one sevdesk contact by its identifier.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "minimum": 1,
            "description": "The sevdesk contact identifier."
          },
          "embed": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One nested sevdesk resource name to embed."
            },
            "description": "Nested resource names to expand through sevdesk's embed query parameter.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "contactId"
        ],
        "description": "Input parameters for reading a single sevdesk contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A sevdesk contact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "contact"
        ],
        "description": "The normalized sevdesk contact lookup response."
      }
    },
    {
      "id": "sevdesk.list_contacts",
      "service": "sevdesk",
      "name": "list_contacts",
      "description": "List sevdesk contacts with optional customer number, pagination, and embed options.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "depth": {
            "type": "string",
            "enum": [
              "0",
              "1"
            ],
            "description": "Whether to return only organizations or both organizations and persons."
          },
          "customerNumber": {
            "type": "string",
            "minLength": 1,
            "description": "The customer number to filter contacts by."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "description": "The maximum number of contacts to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The number of contacts to skip before returning results."
          },
          "countAll": {
            "type": "boolean",
            "description": "Whether sevdesk should include the total number of matching contacts."
          },
          "embed": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One nested sevdesk resource name to embed."
            },
            "description": "Nested resource names to expand through sevdesk's embed query parameter.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing sevdesk contacts."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contacts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A sevdesk contact object."
            },
            "description": "The contacts returned by sevdesk."
          },
          "total": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The total number of matching contacts when sevdesk returns it."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "contacts",
          "total"
        ],
        "description": "The normalized sevdesk contact list response."
      }
    },
    {
      "id": "sevdesk.update_contact",
      "service": "sevdesk",
      "name": "update_contact",
      "description": "Update an existing sevdesk contact using the official contact update payload fields.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "minimum": 1,
            "description": "The sevdesk contact identifier."
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "description": "The organization name. When set, sevdesk treats the contact as an organization."
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The sevdesk contact status code, such as 100, 500, or 1000."
              },
              {
                "type": "null"
              }
            ]
          },
          "customerNumber": {
            "anyOf": [
              {
                "type": "string",
                "description": "The customer number to store on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "parent": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "The referenced sevdesk contact identifier."
                  },
                  "objectName": {
                    "const": "Contact",
                    "type": "string",
                    "description": "The sevdesk model name for a contact reference."
                  }
                },
                "additionalProperties": false,
                "description": "A sevdesk contact reference object."
              },
              {
                "type": "null"
              }
            ]
          },
          "surename": {
            "anyOf": [
              {
                "type": "string",
                "description": "The first name for a person contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "familyname": {
            "anyOf": [
              {
                "type": "string",
                "description": "The last name for a person contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "titel": {
            "anyOf": [
              {
                "type": "string",
                "description": "The non-academic title for the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "category": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "The referenced sevdesk category identifier."
                  },
                  "objectName": {
                    "const": "Category",
                    "type": "string",
                    "description": "The sevdesk model name for a category reference."
                  }
                },
                "additionalProperties": false,
                "description": "A sevdesk contact category reference object."
              },
              {
                "type": "null"
              }
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "description": "The free-form description stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "academicTitle": {
            "anyOf": [
              {
                "type": "string",
                "description": "The academic title for the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "gender": {
            "anyOf": [
              {
                "type": "string",
                "description": "The gender value for the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "name2": {
            "anyOf": [
              {
                "type": "string",
                "description": "The second name for a person contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "birthday": {
            "anyOf": [
              {
                "type": "string",
                "description": "The birthday for a person contact in YYYY-MM-DD format.",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "vatNumber": {
            "anyOf": [
              {
                "type": "string",
                "description": "The VAT number stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "bankAccount": {
            "anyOf": [
              {
                "type": "string",
                "description": "The bank account number (IBAN) stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "bankNumber": {
            "anyOf": [
              {
                "type": "string",
                "description": "The bank number stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultCashbackTime": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The default cashback time in days for this contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultCashbackPercent": {
            "anyOf": [
              {
                "type": "number",
                "description": "The default cashback percent for this contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultTimeToPay": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The default time to pay in days for this contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "taxNumber": {
            "anyOf": [
              {
                "type": "string",
                "description": "The tax number stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "taxOffice": {
            "anyOf": [
              {
                "type": "string",
                "description": "The tax office stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "exemptVat": {
            "anyOf": [
              {
                "type": "boolean",
                "description": "Whether the contact is exempt from VAT."
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultDiscountAmount": {
            "anyOf": [
              {
                "type": "number",
                "description": "The default discount amount applied to this contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultDiscountPercentage": {
            "anyOf": [
              {
                "type": "boolean",
                "description": "Whether the default discount amount is interpreted as a percentage."
              },
              {
                "type": "null"
              }
            ]
          },
          "buyerReference": {
            "anyOf": [
              {
                "type": "string",
                "description": "The buyer reference stored on the contact."
              },
              {
                "type": "null"
              }
            ]
          },
          "governmentAgency": {
            "anyOf": [
              {
                "type": "boolean",
                "description": "Whether the contact represents a government agency."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "contactId"
        ],
        "description": "Input parameters for updating a sevdesk contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A sevdesk contact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "contact"
        ],
        "description": "The normalized sevdesk contact update response."
      }
    }
  ]
}
