{
  "service": "elorus",
  "displayName": "Elorus",
  "categories": [
    "Finance",
    "Productivity"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "elorus_api_key",
      "description": "Elorus API key sent as Authorization: Token <token>. Find it in the Elorus web application under User Profile.",
      "extraFields": [
        {
          "key": "organizationId",
          "label": "Organization ID",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "1000000243015421",
          "description": "The Elorus organization ID sent with the X-Elorus-Organization header. Use the organization you want this connection to operate on."
        }
      ]
    }
  ],
  "homepageUrl": "https://www.elorus.com",
  "actions": [
    {
      "id": "elorus.create_contact",
      "service": "elorus",
      "name": "create_contact",
      "description": "Create one Elorus contact in the selected organization.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A raw Elorus object payload."
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ],
        "description": "The Elorus contact payload to create."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Elorus contact identifier."
              },
              "custom_id": {
                "type": "string",
                "description": "Custom identifier assigned to the contact."
              },
              "active": {
                "type": "boolean",
                "description": "Whether the contact is active."
              },
              "first_name": {
                "type": "string",
                "description": "The contact first name."
              },
              "last_name": {
                "type": "string",
                "description": "The contact last name."
              },
              "company": {
                "type": "string",
                "description": "The company represented by the contact."
              },
              "display_name": {
                "type": "string",
                "description": "The generated display name of the contact."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "An Elorus contact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "contact"
        ],
        "description": "The Elorus create-contact response."
      }
    },
    {
      "id": "elorus.create_invoice",
      "service": "elorus",
      "name": "create_invoice",
      "description": "Create one Elorus invoice in the selected organization.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A raw Elorus object payload."
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ],
        "description": "The Elorus invoice payload to create."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "invoice": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Elorus invoice identifier."
              },
              "custom_id": {
                "type": "string",
                "description": "Custom identifier assigned to the invoice."
              },
              "representation": {
                "type": "string",
                "description": "Human-readable invoice representation."
              },
              "status": {
                "type": "string",
                "description": "Invoice status returned by Elorus."
              },
              "draft": {
                "type": "boolean",
                "description": "Whether the invoice is still a draft."
              },
              "date": {
                "type": "string",
                "description": "Invoice issue date."
              },
              "due_date": {
                "type": "string",
                "description": "Calculated due date returned by Elorus."
              },
              "client_display_name": {
                "type": "string",
                "description": "Client display name shown on the invoice."
              },
              "items": {
                "type": "array",
                "items": {
                  "description": "One raw Elorus array item."
                },
                "description": "A raw Elorus array payload."
              },
              "total": {
                "type": "string",
                "description": "Total amount."
              },
              "permalink": {
                "type": "string",
                "description": "Public permalink for the invoice."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "An Elorus invoice object."
          }
        },
        "additionalProperties": false,
        "required": [
          "invoice"
        ],
        "description": "The Elorus create-invoice response."
      }
    },
    {
      "id": "elorus.create_product",
      "service": "elorus",
      "name": "create_product",
      "description": "Create one Elorus product or service in the selected organization.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A raw Elorus object payload."
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ],
        "description": "The Elorus product or service payload to create."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "product": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Elorus product or service identifier."
              },
              "custom_id": {
                "type": "string",
                "description": "Custom identifier assigned to the product."
              },
              "title": {
                "type": "string",
                "description": "The product or service title."
              },
              "code": {
                "type": "string",
                "description": "Optional product code."
              },
              "description": {
                "type": "string",
                "description": "Product or service description."
              },
              "sales": {
                "type": "boolean",
                "description": "Whether the record is available for sales."
              },
              "purchases": {
                "type": "boolean",
                "description": "Whether the record is available for purchases."
              },
              "active": {
                "type": "boolean",
                "description": "Whether the product or service is active."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "An Elorus product or service object."
          }
        },
        "additionalProperties": false,
        "required": [
          "product"
        ],
        "description": "The Elorus create-product response."
      }
    },
    {
      "id": "elorus.get_contact",
      "service": "elorus",
      "name": "get_contact",
      "description": "Get one Elorus contact by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Elorus object identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "The Elorus contact identifier to retrieve."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Elorus contact identifier."
              },
              "custom_id": {
                "type": "string",
                "description": "Custom identifier assigned to the contact."
              },
              "active": {
                "type": "boolean",
                "description": "Whether the contact is active."
              },
              "first_name": {
                "type": "string",
                "description": "The contact first name."
              },
              "last_name": {
                "type": "string",
                "description": "The contact last name."
              },
              "company": {
                "type": "string",
                "description": "The company represented by the contact."
              },
              "display_name": {
                "type": "string",
                "description": "The generated display name of the contact."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "An Elorus contact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "contact"
        ],
        "description": "The Elorus contact lookup response."
      }
    },
    {
      "id": "elorus.get_invoice",
      "service": "elorus",
      "name": "get_invoice",
      "description": "Get one Elorus invoice by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Elorus object identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "The Elorus invoice identifier to retrieve."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "invoice": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Elorus invoice identifier."
              },
              "custom_id": {
                "type": "string",
                "description": "Custom identifier assigned to the invoice."
              },
              "representation": {
                "type": "string",
                "description": "Human-readable invoice representation."
              },
              "status": {
                "type": "string",
                "description": "Invoice status returned by Elorus."
              },
              "draft": {
                "type": "boolean",
                "description": "Whether the invoice is still a draft."
              },
              "date": {
                "type": "string",
                "description": "Invoice issue date."
              },
              "due_date": {
                "type": "string",
                "description": "Calculated due date returned by Elorus."
              },
              "client_display_name": {
                "type": "string",
                "description": "Client display name shown on the invoice."
              },
              "items": {
                "type": "array",
                "items": {
                  "description": "One raw Elorus array item."
                },
                "description": "A raw Elorus array payload."
              },
              "total": {
                "type": "string",
                "description": "Total amount."
              },
              "permalink": {
                "type": "string",
                "description": "Public permalink for the invoice."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "An Elorus invoice object."
          }
        },
        "additionalProperties": false,
        "required": [
          "invoice"
        ],
        "description": "The Elorus get-invoice response."
      }
    },
    {
      "id": "elorus.get_product",
      "service": "elorus",
      "name": "get_product",
      "description": "Get one Elorus product or service by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Elorus object identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "The Elorus product or service identifier to retrieve."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "product": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Elorus product or service identifier."
              },
              "custom_id": {
                "type": "string",
                "description": "Custom identifier assigned to the product."
              },
              "title": {
                "type": "string",
                "description": "The product or service title."
              },
              "code": {
                "type": "string",
                "description": "Optional product code."
              },
              "description": {
                "type": "string",
                "description": "Product or service description."
              },
              "sales": {
                "type": "boolean",
                "description": "Whether the record is available for sales."
              },
              "purchases": {
                "type": "boolean",
                "description": "Whether the record is available for purchases."
              },
              "active": {
                "type": "boolean",
                "description": "Whether the product or service is active."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "An Elorus product or service object."
          }
        },
        "additionalProperties": false,
        "required": [
          "product"
        ],
        "description": "The Elorus get-product response."
      }
    },
    {
      "id": "elorus.list_contacts",
      "service": "elorus",
      "name": "list_contacts",
      "description": "List Elorus contacts with optional search, filters, and pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ordering": {
            "type": "string",
            "minLength": 1,
            "description": "Official Elorus ordering expression such as modified or -modified."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Free-text search term forwarded to the official Elorus search parameter."
          },
          "search_fields": {
            "type": "string",
            "minLength": 1,
            "description": "Comma-separated Elorus search_fields value."
          },
          "custom_id": {
            "type": "string",
            "minLength": 1,
            "description": "Custom identifier filter."
          },
          "created_after": {
            "type": "string",
            "minLength": 1,
            "description": "Lower bound for the created timestamp filter."
          },
          "created_before": {
            "type": "string",
            "minLength": 1,
            "description": "Upper bound for the created timestamp filter."
          },
          "modified_after": {
            "type": "string",
            "minLength": 1,
            "description": "Lower bound for the modified timestamp filter."
          },
          "modified_before": {
            "type": "string",
            "minLength": 1,
            "description": "Upper bound for the modified timestamp filter."
          },
          "modified_period": {
            "type": "string",
            "minLength": 1,
            "description": "Relative modified period filter accepted by Elorus."
          },
          "created_period": {
            "type": "string",
            "minLength": 1,
            "description": "Relative created period filter accepted by Elorus."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The page number to request."
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of results to return per page."
          },
          "letter": {
            "type": "string",
            "minLength": 1,
            "description": "Initial letter filter applied by Elorus."
          },
          "ctype": {
            "type": "string",
            "minLength": 1,
            "description": "Official Elorus contact type filter."
          },
          "profession": {
            "type": "string",
            "minLength": 1,
            "description": "Profession filter."
          },
          "company": {
            "type": "boolean",
            "description": "Whether to filter to company contacts."
          },
          "active": {
            "type": "boolean",
            "description": "Whether to filter to active contacts."
          }
        },
        "additionalProperties": false,
        "description": "The query parameters for listing Elorus contacts."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "Total number of records available."
          },
          "next": {
            "anyOf": [
              {
                "type": "string",
                "description": "URL for the next page, or null when there is no next page."
              },
              {
                "type": "null"
              }
            ]
          },
          "previous": {
            "anyOf": [
              {
                "type": "string",
                "description": "URL for the previous page, or null when there is no previous page."
              },
              {
                "type": "null"
              }
            ]
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Elorus contact identifier."
                },
                "custom_id": {
                  "type": "string",
                  "description": "Custom identifier assigned to the contact."
                },
                "active": {
                  "type": "boolean",
                  "description": "Whether the contact is active."
                },
                "first_name": {
                  "type": "string",
                  "description": "The contact first name."
                },
                "last_name": {
                  "type": "string",
                  "description": "The contact last name."
                },
                "company": {
                  "type": "string",
                  "description": "The company represented by the contact."
                },
                "display_name": {
                  "type": "string",
                  "description": "The generated display name of the contact."
                }
              },
              "additionalProperties": true,
              "required": [
                "id"
              ],
              "description": "An Elorus contact object."
            },
            "description": "Contacts returned by the current page."
          }
        },
        "additionalProperties": false,
        "required": [
          "count",
          "next",
          "previous",
          "results"
        ],
        "description": "Paginated Elorus contact list response."
      }
    },
    {
      "id": "elorus.list_invoices",
      "service": "elorus",
      "name": "list_invoices",
      "description": "List Elorus invoices with optional filters and pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ordering": {
            "type": "string",
            "minLength": 1,
            "description": "Official Elorus ordering expression such as modified or -modified."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Free-text search term forwarded to the official Elorus search parameter."
          },
          "search_fields": {
            "type": "string",
            "minLength": 1,
            "description": "Comma-separated Elorus search_fields value."
          },
          "custom_id": {
            "type": "string",
            "minLength": 1,
            "description": "Custom identifier filter."
          },
          "created_after": {
            "type": "string",
            "minLength": 1,
            "description": "Lower bound for the created timestamp filter."
          },
          "created_before": {
            "type": "string",
            "minLength": 1,
            "description": "Upper bound for the created timestamp filter."
          },
          "modified_after": {
            "type": "string",
            "minLength": 1,
            "description": "Lower bound for the modified timestamp filter."
          },
          "modified_before": {
            "type": "string",
            "minLength": 1,
            "description": "Upper bound for the modified timestamp filter."
          },
          "modified_period": {
            "type": "string",
            "minLength": 1,
            "description": "Relative modified period filter accepted by Elorus."
          },
          "created_period": {
            "type": "string",
            "minLength": 1,
            "description": "Relative created period filter accepted by Elorus."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The page number to request."
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of results to return per page."
          },
          "period_from": {
            "type": "string",
            "minLength": 1,
            "description": "Lower bound of the invoice issue-date period filter."
          },
          "period_to": {
            "type": "string",
            "minLength": 1,
            "description": "Upper bound of the invoice issue-date period filter."
          },
          "period": {
            "type": "string",
            "minLength": 1,
            "description": "Relative period filter accepted by Elorus."
          },
          "status": {
            "type": "string",
            "minLength": 1,
            "description": "Invoice status filter."
          },
          "draft": {
            "type": "boolean",
            "description": "Whether to filter to draft invoices."
          },
          "pending_approval": {
            "type": "boolean",
            "description": "Whether to filter to pending-approval invoices."
          },
          "fpaid": {
            "type": "boolean",
            "description": "Whether to filter to fully paid invoices."
          },
          "is_void": {
            "type": "boolean",
            "description": "Whether to filter to void invoices."
          },
          "overdue": {
            "type": "boolean",
            "description": "Whether to filter to overdue invoices."
          },
          "client": {
            "type": "string",
            "minLength": 1,
            "description": "Client contact identifier filter."
          },
          "currency_code": {
            "type": "string",
            "minLength": 1,
            "description": "Currency code filter."
          },
          "documenttype": {
            "type": "string",
            "minLength": 1,
            "description": "Document type identifier filter."
          },
          "sequence": {
            "type": "string",
            "minLength": 1,
            "description": "Sequence filter."
          }
        },
        "additionalProperties": false,
        "description": "The query parameters for listing Elorus invoices."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "Total number of records available."
          },
          "next": {
            "anyOf": [
              {
                "type": "string",
                "description": "URL for the next page, or null when there is no next page."
              },
              {
                "type": "null"
              }
            ]
          },
          "previous": {
            "anyOf": [
              {
                "type": "string",
                "description": "URL for the previous page, or null when there is no previous page."
              },
              {
                "type": "null"
              }
            ]
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Elorus invoice identifier."
                },
                "custom_id": {
                  "type": "string",
                  "description": "Custom identifier assigned to the invoice."
                },
                "representation": {
                  "type": "string",
                  "description": "Human-readable invoice representation."
                },
                "status": {
                  "type": "string",
                  "description": "Invoice status returned by Elorus."
                },
                "draft": {
                  "type": "boolean",
                  "description": "Whether the invoice is still a draft."
                },
                "date": {
                  "type": "string",
                  "description": "Invoice issue date."
                },
                "due_date": {
                  "type": "string",
                  "description": "Calculated due date returned by Elorus."
                },
                "client_display_name": {
                  "type": "string",
                  "description": "Client display name shown on the invoice."
                },
                "items": {
                  "type": "array",
                  "items": {
                    "description": "One raw Elorus array item."
                  },
                  "description": "A raw Elorus array payload."
                },
                "total": {
                  "type": "string",
                  "description": "Total amount."
                },
                "permalink": {
                  "type": "string",
                  "description": "Public permalink for the invoice."
                }
              },
              "additionalProperties": true,
              "required": [
                "id"
              ],
              "description": "An Elorus invoice object."
            },
            "description": "Invoices returned by the current page."
          }
        },
        "additionalProperties": false,
        "required": [
          "count",
          "next",
          "previous",
          "results"
        ],
        "description": "Paginated Elorus invoice list response."
      }
    },
    {
      "id": "elorus.list_products",
      "service": "elorus",
      "name": "list_products",
      "description": "List Elorus products or services with optional filters and pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ordering": {
            "type": "string",
            "minLength": 1,
            "description": "Official Elorus ordering expression such as modified or -modified."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Free-text search term forwarded to the official Elorus search parameter."
          },
          "search_fields": {
            "type": "string",
            "minLength": 1,
            "description": "Comma-separated Elorus search_fields value."
          },
          "custom_id": {
            "type": "string",
            "minLength": 1,
            "description": "Custom identifier filter."
          },
          "created_after": {
            "type": "string",
            "minLength": 1,
            "description": "Lower bound for the created timestamp filter."
          },
          "created_before": {
            "type": "string",
            "minLength": 1,
            "description": "Upper bound for the created timestamp filter."
          },
          "modified_after": {
            "type": "string",
            "minLength": 1,
            "description": "Lower bound for the modified timestamp filter."
          },
          "modified_before": {
            "type": "string",
            "minLength": 1,
            "description": "Upper bound for the modified timestamp filter."
          },
          "modified_period": {
            "type": "string",
            "minLength": 1,
            "description": "Relative modified period filter accepted by Elorus."
          },
          "created_period": {
            "type": "string",
            "minLength": 1,
            "description": "Relative created period filter accepted by Elorus."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The page number to request."
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of results to return per page."
          },
          "sales": {
            "type": "boolean",
            "description": "Whether to filter to sale-enabled products or services."
          },
          "purchases": {
            "type": "boolean",
            "description": "Whether to filter to purchase-enabled products or services."
          },
          "active": {
            "type": "boolean",
            "description": "Whether to filter to active products or services."
          }
        },
        "additionalProperties": false,
        "description": "The query parameters for listing Elorus products or services."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "Total number of records available."
          },
          "next": {
            "anyOf": [
              {
                "type": "string",
                "description": "URL for the next page, or null when there is no next page."
              },
              {
                "type": "null"
              }
            ]
          },
          "previous": {
            "anyOf": [
              {
                "type": "string",
                "description": "URL for the previous page, or null when there is no previous page."
              },
              {
                "type": "null"
              }
            ]
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Elorus product or service identifier."
                },
                "custom_id": {
                  "type": "string",
                  "description": "Custom identifier assigned to the product."
                },
                "title": {
                  "type": "string",
                  "description": "The product or service title."
                },
                "code": {
                  "type": "string",
                  "description": "Optional product code."
                },
                "description": {
                  "type": "string",
                  "description": "Product or service description."
                },
                "sales": {
                  "type": "boolean",
                  "description": "Whether the record is available for sales."
                },
                "purchases": {
                  "type": "boolean",
                  "description": "Whether the record is available for purchases."
                },
                "active": {
                  "type": "boolean",
                  "description": "Whether the product or service is active."
                }
              },
              "additionalProperties": true,
              "required": [
                "id"
              ],
              "description": "An Elorus product or service object."
            },
            "description": "Products or services returned by the current page."
          }
        },
        "additionalProperties": false,
        "required": [
          "count",
          "next",
          "previous",
          "results"
        ],
        "description": "Paginated Elorus product list response."
      }
    },
    {
      "id": "elorus.update_contact",
      "service": "elorus",
      "name": "update_contact",
      "description": "Update one Elorus contact by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Elorus object identifier."
          },
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A raw Elorus object payload."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "data"
        ],
        "description": "The Elorus contact ID and full payload to update."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Elorus contact identifier."
              },
              "custom_id": {
                "type": "string",
                "description": "Custom identifier assigned to the contact."
              },
              "active": {
                "type": "boolean",
                "description": "Whether the contact is active."
              },
              "first_name": {
                "type": "string",
                "description": "The contact first name."
              },
              "last_name": {
                "type": "string",
                "description": "The contact last name."
              },
              "company": {
                "type": "string",
                "description": "The company represented by the contact."
              },
              "display_name": {
                "type": "string",
                "description": "The generated display name of the contact."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "An Elorus contact object."
          }
        },
        "additionalProperties": false,
        "required": [
          "contact"
        ],
        "description": "The Elorus update-contact response."
      }
    },
    {
      "id": "elorus.update_invoice",
      "service": "elorus",
      "name": "update_invoice",
      "description": "Update one Elorus invoice by ID using the official full-update endpoint.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Elorus object identifier."
          },
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A raw Elorus object payload."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "data"
        ],
        "description": "The Elorus invoice ID and full payload to update."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "invoice": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Elorus invoice identifier."
              },
              "custom_id": {
                "type": "string",
                "description": "Custom identifier assigned to the invoice."
              },
              "representation": {
                "type": "string",
                "description": "Human-readable invoice representation."
              },
              "status": {
                "type": "string",
                "description": "Invoice status returned by Elorus."
              },
              "draft": {
                "type": "boolean",
                "description": "Whether the invoice is still a draft."
              },
              "date": {
                "type": "string",
                "description": "Invoice issue date."
              },
              "due_date": {
                "type": "string",
                "description": "Calculated due date returned by Elorus."
              },
              "client_display_name": {
                "type": "string",
                "description": "Client display name shown on the invoice."
              },
              "items": {
                "type": "array",
                "items": {
                  "description": "One raw Elorus array item."
                },
                "description": "A raw Elorus array payload."
              },
              "total": {
                "type": "string",
                "description": "Total amount."
              },
              "permalink": {
                "type": "string",
                "description": "Public permalink for the invoice."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "An Elorus invoice object."
          }
        },
        "additionalProperties": false,
        "required": [
          "invoice"
        ],
        "description": "The Elorus update-invoice response."
      }
    },
    {
      "id": "elorus.update_product",
      "service": "elorus",
      "name": "update_product",
      "description": "Update one Elorus product or service by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Elorus object identifier."
          },
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A raw Elorus object payload."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "data"
        ],
        "description": "The Elorus product or service ID and full payload to update."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "product": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Elorus product or service identifier."
              },
              "custom_id": {
                "type": "string",
                "description": "Custom identifier assigned to the product."
              },
              "title": {
                "type": "string",
                "description": "The product or service title."
              },
              "code": {
                "type": "string",
                "description": "Optional product code."
              },
              "description": {
                "type": "string",
                "description": "Product or service description."
              },
              "sales": {
                "type": "boolean",
                "description": "Whether the record is available for sales."
              },
              "purchases": {
                "type": "boolean",
                "description": "Whether the record is available for purchases."
              },
              "active": {
                "type": "boolean",
                "description": "Whether the product or service is active."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "An Elorus product or service object."
          }
        },
        "additionalProperties": false,
        "required": [
          "product"
        ],
        "description": "The Elorus update-product response."
      }
    }
  ]
}
