{
  "openapi": "3.0.3",
  "info": {
    "version": "2.85.1",
    "title": "ChurchSuite API - v2",
    "description": "Access data from your ChurchSuite account over RESTful endpoints, returning JSON responses.",
    "termsOfService": "https://churchsuite.com/terms-of-service/",
    "contact": {
      "email": "support@churchsuite.com"
    }
  },
  "servers": [
    {
      "url": "https://api.churchsuite.com/v2",
      "description": "Public API server"
    }
  ],
  "paths": {
    "/account": {
      "get": {
        "operationId": "get_account",
        "summary": "Get account details",
        "description": "Retrieve the details about your account.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Account"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "profile.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "profile.read"
            ]
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/account/brands/default": {
      "get": {
        "operationId": "get_default_brand",
        "summary": "Get default brand",
        "description": "Retrieve the default brand, used in places where a specific brand has not been selected.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Brand"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "account"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "account"
            ]
          }
        ],
        "tags": [
          "Brands"
        ]
      }
    },
    "/account/brands/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 678,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_brand",
        "summary": "Get a brand",
        "description": "Retrieve a single brand identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Brand"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "brands.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "brands.read"
            ]
          }
        ],
        "tags": [
          "Brands"
        ]
      }
    },
    "/account/brands": {
      "get": {
        "operationId": "list_brands",
        "summary": "List brands",
        "description": "Returns a list of brands, sorted alphabetically by name.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Brand"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "brands.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "brands.read"
            ]
          }
        ],
        "tags": [
          "Brands"
        ]
      }
    },
    "/account/info": {
      "get": {
        "operationId": "get_account_info",
        "summary": "Get a summary of public account details",
        "description": "Retrieve a summary of the public details about your account, that excludes information like the personal contact details of your billing, account and data protection contacts.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Info"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "account"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "account"
            ]
          }
        ],
        "tags": [
          "Profile"
        ]
      }
    },
    "/account/integrations/stripe/accounts": {
      "get": {
        "operationId": "list_stripe_accounts",
        "summary": "List Stripe integration accounts",
        "description": "Returns a list of integrated Stripe accounts.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/StripeAccount"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          }
        ],
        "tags": [
          "Integrations"
        ]
      }
    },
    "/account/sites/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 678,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_site",
        "summary": "Get a site",
        "description": "Retrieve a single site identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Site"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "account"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "account"
            ]
          }
        ],
        "tags": [
          "Sites"
        ]
      }
    },
    "/account/sites": {
      "get": {
        "operationId": "list_sites",
        "summary": "List sites",
        "description": "Returns a list of sites, sorted by the order property.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Site"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "account"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "account"
            ]
          }
        ],
        "tags": [
          "Sites"
        ]
      }
    },
    "/account/users/current": {
      "get": {
        "operationId": "get_current_user",
        "summary": "Get current user",
        "description": "Retrieve a single user identified as the user currently making the API request.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/User"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "user"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "user"
            ]
          }
        ],
        "tags": [
          "Users"
        ]
      }
    },
    "/account/users/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 678,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_user",
        "summary": "Get a user",
        "description": "Retrieve a single user identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/User"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "users.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "users.read"
            ]
          }
        ],
        "tags": [
          "Users"
        ]
      }
    },
    "/account/users": {
      "get": {
        "operationId": "list_users",
        "summary": "List users",
        "description": "Returns a list of users, sorted alphabetically by username.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/User"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "users.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "users.read"
            ]
          }
        ],
        "tags": [
          "Users"
        ]
      }
    },
    "/account/user_groups": {
      "get": {
        "operationId": "list_user_groups",
        "summary": "List user groups",
        "description": "Returns a list of user groups, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/UserGroup"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "usergroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "usergroups.read"
            ]
          }
        ],
        "tags": [
          "Users"
        ]
      }
    },
    "/addressbook/contacts/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 78,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_contact",
        "summary": "Get a contact",
        "description": "Retrieve a single contact identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Contact"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Contacts"
        ]
      },
      "delete": {
        "operationId": "delete_contact",
        "summary": "Delete a contact",
        "description": "Delete a single contact identified by ID.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Contacts"
        ]
      },
      "put": {
        "operationId": "edit_contact",
        "summary": "Update a contact",
        "description": "Update a single contact identified by ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactEdit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Contact"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Contacts"
        ]
      }
    },
    "/addressbook/contacts/{id}/notes": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the Contact in question.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 2161,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "list_contact_notes",
        "summary": "List contact notes",
        "description": "Returns a list of contact notes, sorted by pinned, created_at.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Note"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Contacts"
        ]
      },
      "post": {
        "operationId": "create_contact_note",
        "summary": "Create a contact note",
        "description": "Create a Note against a Contact in the Address Book module.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Note"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Contacts"
        ]
      }
    },
    "/addressbook/contacts": {
      "get": {
        "operationId": "list_contacts",
        "summary": "List contacts",
        "description": "Returns a list of contacts, sorted alphabetically by last_name then first_name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived",
                "pending"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: first_name, last_name, formal_name, email, telephone, mobile, address, job, employer.",
            "schema": {
              "description": "A string to query by",
              "type": "string",
              "example": "mike",
              "minLength": 1
            }
          },
          {
            "name": "tag_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Contact"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Contacts"
        ]
      },
      "post": {
        "operationId": "create_contact",
        "summary": "Create a contact",
        "description": "Create a contact with the provided settings.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Contact"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditContactByID": {
                "operationId": "edit_contact",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "GetContactByID": {
                "operationId": "get_contact",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteContactByID": {
                "operationId": "delete_contact",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "CreateContactNote": {
                "operationId": "create_contact_note",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "CreateContactKeyDateResource": {
                "operationId": "create_contact_key_date_resource",
                "requestBody": {
                  "resource": {
                    "id": "$response.body#/data/id"
                  }
                }
              },
              "CreateContactTagResource": {
                "operationId": "create_addressbook_tag_resource",
                "requestBody": {
                  "person": {
                    "id": "$response.body#/data/id"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Contacts"
        ]
      }
    },
    "/addressbook/custom_fields/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the custom field to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 8,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_addressbook_custom_field",
        "summary": "Get a custom field",
        "description": "Retrieve a single custom field identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomField"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Custom Fields"
        ]
      }
    },
    "/addressbook/custom_fields": {
      "get": {
        "operationId": "list_addressbook_custom_fields",
        "summary": "List custom fields",
        "description": "Returns a list of custom fields",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CustomField"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Custom Fields"
        ]
      }
    },
    "/addressbook/flows/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 45,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_contact_flow",
        "summary": "Get a flow",
        "description": "Retrieve a single flow identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Flow"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Flows"
        ]
      }
    },
    "/addressbook/flows": {
      "get": {
        "operationId": "list_addressbook_flows",
        "summary": "List flows",
        "description": "Returns a list of flows, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "wedding",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Flow"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Flows"
        ]
      }
    },
    "/addressbook/form_fields/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the form field to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 8,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_addressbook_form_field",
        "summary": "Get a form field",
        "description": "Retrieve a single form field identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FormField"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Form Fields"
        ]
      }
    },
    "/addressbook/form_fields": {
      "get": {
        "operationId": "list_addressbook_form_fields",
        "summary": "List form fields",
        "description": "Returns a list of form fields",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "form_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FormField"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Form Fields"
        ]
      }
    },
    "/addressbook/form_responses/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 45,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_addressbook_form_response",
        "summary": "Get a form response",
        "description": "Retrieve a single form response identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FormResponse"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Form Responses"
        ]
      }
    },
    "/addressbook/form_responses": {
      "get": {
        "operationId": "list_addressbook_form_responses",
        "summary": "List form responses",
        "description": "Returns a list of form responses, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "form_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "statuses[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "active",
                "enum": [
                  "active",
                  "archived",
                  "spam"
                ]
              }
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: first_name, last_name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "sally",
              "minLength": 1
            }
          },
          {
            "name": "has_linked_resource",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "boolean",
              "example": true
            }
          },
          {
            "name": "invite_response",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "boolean",
              "example": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FormResponse"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Form Responses"
        ]
      }
    },
    "/addressbook/key_date_resources/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 45,
            "minimum": 1
          }
        }
      ],
      "delete": {
        "operationId": "delete_contact_key_date_resource",
        "summary": "Delete a key date resource",
        "description": "Delete a single key date resource identified by an ID, removing a contact from a key date.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "put": {
        "operationId": "edit_contact_key_date_resource",
        "summary": "Update a key date resource",
        "description": "Update a single key date resource identified by ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyDateResourceEdit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDateResource"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      }
    },
    "/addressbook/key_date_resources": {
      "get": {
        "operationId": "list_contact_key_date_resources",
        "summary": "List key date resources",
        "description": "Returns a list of key date resources, optionally filtered by key date or contact ID. A key date resource records an instance of a key date for a contact on a given date.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "key_date_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "contact_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyDateResource"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "post": {
        "operationId": "create_contact_key_date_resource",
        "summary": "Create a key date resource",
        "description": "Create a key date resource adding a contact to a key date",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyDateResourceAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDateResource"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditKeyDateResourceByID": {
                "operationId": "edit_contact_key_date_resource",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteKeyDateResourceByID": {
                "operationId": "delete_contact_key_date_resource",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      }
    },
    "/addressbook/key_dates/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 78,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_addressbook_key_date",
        "summary": "Get a key date",
        "description": "Retrieve a single key date identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDate"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "delete": {
        "operationId": "delete_addressbook_key_date",
        "summary": "Delete a key date",
        "description": "Delete a single key date identified by ID.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "put": {
        "operationId": "edit_addressbook_key_date",
        "summary": "Update a key date",
        "description": "Update a single key date identified by ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyDateEdit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDate"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      }
    },
    "/addressbook/key_dates": {
      "get": {
        "operationId": "list_addressbook_key_dates",
        "summary": "List key dates",
        "description": "Returns a list of key dates, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "Joined",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyDate"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "post": {
        "operationId": "create_addressbook_key_date",
        "summary": "Create a key date",
        "description": "Create a key date with the provided settings.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyDateAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDate"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditKeyDateByID": {
                "operationId": "edit_addressbook_key_date",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "GetKeyDateByID": {
                "operationId": "get_addressbook_key_date",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteKeyDateByID": {
                "operationId": "delete_addressbook_key_date",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "AddKeyDateResource": {
                "operationId": "create_contact_key_date_resource",
                "requestBody": {
                  "key_date_id": "$response.body#/data/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      }
    },
    "/addressbook/tags/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "delete": {
        "operationId": "delete_addressbook_tag",
        "summary": "Delete a tag",
        "description": "Delete a single tag identified by an ID.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "get": {
        "operationId": "get_addressbook_tag",
        "summary": "Get a tag",
        "description": "Retrieve a single tag identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "put": {
        "operationId": "edit_addressbook_tag",
        "summary": "Update a tag",
        "description": "Update a tag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagEdit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/addressbook/tags": {
      "get": {
        "operationId": "list_addressbook_tag",
        "summary": "List tags",
        "description": "Returns a list of tags, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A string to query by",
              "type": "string",
              "example": "leaders",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tag"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "post": {
        "operationId": "create_addressbook_tag",
        "summary": "Create a tag",
        "description": "Create a tag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditAddressBookTagByID": {
                "operationId": "edit_addressbook_tag",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteAddressBookTagByID": {
                "operationId": "delete_addressbook_tag",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "CreateAddressBookTagResource": {
                "operationId": "create_addressbook_tag_resource",
                "requestBody": {
                  "tag_id": "$response.body#/data/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/addressbook/tag_categories/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the category to retrieve",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_addressbook_tag_category",
        "summary": "Get a tag category",
        "description": "Retrieve a single tag category identified by ID",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TagCategory"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/addressbook/tag_categories": {
      "get": {
        "operationId": "list_addressbook_tag_categories",
        "summary": "List tag categories",
        "description": "Returns a list of tag categories, sorted alphabetically by name.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TagCategory"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/addressbook/tag_resources": {
      "delete": {
        "operationId": "delete_addressbook_tag_resource",
        "summary": "Delete a tag resource",
        "description": "Delete a single tag resource identified by a contact ID and tag ID, unlinking a contact from a tag.",
        "parameters": [
          {
            "name": "contact_id",
            "in": "query",
            "description": "Filter records by the provided ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          },
          {
            "name": "tag_id",
            "in": "query",
            "description": "Filter records by the provided ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "get": {
        "operationId": "list_addressbook_tag_resources",
        "summary": "List tag resources",
        "description": "Returns a list of tag resources. A tag resource is the relational model linking a contact to a tag.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "contact_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "tag_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TagResource"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "post": {
        "operationId": "create_addressbook_tag_resource",
        "summary": "Create a tag resource",
        "description": "Create a tag resource linking a contact to a tag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagResourceAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TagResource"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "addressbook.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "addressbook.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/attendance/gatherings/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_attendance_gathering",
        "summary": "Get a gathering",
        "description": "Retrieve a single gathering identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Gathering"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "attendance.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "attendance.read"
            ]
          }
        ],
        "tags": [
          "Gatherings"
        ]
      }
    },
    "/attendance/gatherings": {
      "get": {
        "operationId": "list_attendance_gatherings",
        "summary": "List gatherings",
        "description": "Returns a list of gatherings, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A string to query by.",
              "type": "string",
              "example": "Sunday AM",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Gathering"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "attendance.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "attendance.read"
            ]
          }
        ],
        "tags": [
          "Gatherings"
        ]
      }
    },
    "/attendance/metricsets/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_attendance_metricset",
        "summary": "Get a metricset",
        "description": "Retrieve a single metricset identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Metricset"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "attendance.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "attendance.read"
            ]
          }
        ],
        "tags": [
          "Metricsets"
        ]
      }
    },
    "/attendance/metricsets": {
      "get": {
        "operationId": "list_attendance_metricsets",
        "summary": "List metricsets",
        "description": "Returns a list of metricsets, sorted alphabetically by order.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "gathering_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Metricset"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "attendance.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "attendance.read"
            ]
          }
        ],
        "tags": [
          "Metricsets"
        ]
      }
    },
    "/attendance/metrics": {
      "get": {
        "operationId": "get_attendance_metrics",
        "summary": "List metrics",
        "description": "Returns a list of metrics, sorted alphabetically by order.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "metricset_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Metric"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "attendance.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "attendance.read"
            ]
          }
        ],
        "tags": [
          "Metrics"
        ]
      }
    },
    "/attendance/records/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_attendance_record",
        "summary": "Get a record",
        "description": "Retrieve a single record identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Record"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "attendance.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "attendance.read"
            ]
          }
        ],
        "tags": [
          "Records"
        ]
      }
    },
    "/attendance/records": {
      "get": {
        "operationId": "list_attendance_records",
        "summary": "List records",
        "description": "Returns a list of records, sorted by date.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "days[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "wednesday",
                "enum": [
                  "monday",
                  "tuesday",
                  "wednesday",
                  "thursday",
                  "friday",
                  "saturday",
                  "sunday"
                ]
              }
            }
          },
          {
            "name": "gathering_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "is_before",
            "in": "query",
            "description": "Only include records that are before this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2024-02-24"
            }
          },
          {
            "name": "is_after",
            "in": "query",
            "description": "Only include records that are after this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2024-01-24"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Record"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "attendance.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "attendance.read"
            ]
          }
        ],
        "tags": [
          "Records"
        ]
      }
    },
    "/attendance/record_contacts": {
      "get": {
        "operationId": "list_record_contacts",
        "summary": "List record contacts",
        "description": "Returns a list of contacts who were recorded as attending a gathering.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "contact_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "record_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/RecordContact"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "attendance.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "attendance.read"
            ]
          }
        ],
        "tags": [
          "Records"
        ]
      }
    },
    "/attendance/record_metrics": {
      "get": {
        "operationId": "list_record_metric",
        "summary": "List record metrics",
        "description": "Returns a list of record metrics, i.e. number/currency values that have been recorded for an attendance record.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "metric_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "record_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/RecordMetric"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "attendance.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "attendance.read"
            ]
          }
        ],
        "tags": [
          "Records"
        ]
      }
    },
    "/bookings/booked_resources": {
      "get": {
        "operationId": "list_booked_resources",
        "summary": "List booked resources",
        "description": "Returns a list of booked resources, sorted by start date.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "booking_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/BookedResource"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Resources"
        ]
      }
    },
    "/bookings/bookings/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_booking",
        "summary": "Get a booking",
        "description": "Retrieve a single booking identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Booking"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Bookings"
        ]
      }
    },
    "/bookings/bookings/{id}/notes": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the Booking in question.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 8005,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "list_booking_notes",
        "summary": "List booking notes",
        "description": "Returns a list of booking notes, sorted by pinned, created_at.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Note"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Bookings"
        ]
      },
      "post": {
        "operationId": "create_booking_note",
        "summary": "Create a booking note",
        "description": "Create a Note against a Booking in the Bookings module.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Note"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.write"
            ]
          }
        ],
        "tags": [
          "Bookings"
        ]
      }
    },
    "/bookings/bookings": {
      "get": {
        "operationId": "list_bookings",
        "summary": "List bookings",
        "description": "Returns a list of bookings, sorted alphabetically start date.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "confirmed",
              "default": "confirmed",
              "enum": [
                "confirmed",
                "cancelled",
                "pending",
                "declined"
              ]
            }
          },
          {
            "name": "starts_before",
            "in": "query",
            "description": "Only include records that start before this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2024-02-24"
            }
          },
          {
            "name": "starts_after",
            "in": "query",
            "description": "Only include records that start after this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2024-01-24"
            }
          },
          {
            "name": "customer_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "type_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name, date, reference, sequence_id.",
            "schema": {
              "description": "A string to query by",
              "type": "string",
              "example": "2024-04-12",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Booking"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Bookings"
        ]
      }
    },
    "/bookings/charges": {
      "get": {
        "operationId": "list_charges",
        "summary": "List charges",
        "description": "Returns a list of charges, sorted by due date. Requires either a booking_id or customer_id parameter to be provided.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "booking_id",
            "in": "query",
            "description": "Filter records by the provided ID.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          },
          {
            "name": "customer_id",
            "in": "query",
            "description": "Filter records by the provided ID.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          },
          {
            "name": "paid",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "boolean",
              "example": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Charge"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Charges"
        ]
      }
    },
    "/bookings/customers/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_customer",
        "summary": "Get a customer",
        "description": "Retrieve a single customer identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Customer"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Customers"
        ]
      }
    },
    "/bookings/customers/{id}/notes": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the Customer in question.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 321,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "list_customer_notes",
        "summary": "List customer notes",
        "description": "Returns a list of customer notes, sorted by pinned, created_at.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Note"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Customers"
        ]
      },
      "post": {
        "operationId": "create_customer_note",
        "summary": "Create a customer note",
        "description": "Create a Note against a Customer in the Bookings module.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Note"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.write"
            ]
          }
        ],
        "tags": [
          "Customers"
        ]
      }
    },
    "/bookings/customers": {
      "get": {
        "operationId": "list_customers",
        "summary": "List customers",
        "description": "Returns a list of customers, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          },
          {
            "name": "customer_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: first_name, last_name, job, employer.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "dave",
              "minLength": 1
            }
          },
          {
            "name": "tag_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Customer"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Customers"
        ]
      }
    },
    "/bookings/custom_fields/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the custom field to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_bookings_custom_field",
        "summary": "Get a custom field",
        "description": "Retrieve a single custom field identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomField"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Custom Fields"
        ]
      }
    },
    "/bookings/custom_fields": {
      "get": {
        "operationId": "list_bookings_custom_fields",
        "summary": "List custom fields",
        "description": "Returns a list of custom fields",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CustomField"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Custom Fields"
        ]
      }
    },
    "/bookings/flows/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_bookings_flow",
        "summary": "Get a flow",
        "description": "Retrieve a single flow identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Flow"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Flows"
        ]
      }
    },
    "/bookings/flows": {
      "get": {
        "operationId": "list_bookings_flows",
        "summary": "List flows",
        "description": "Returns a list of flows, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "wedding",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Flow"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Flows"
        ]
      }
    },
    "/bookings/prices": {
      "get": {
        "operationId": "list_prices",
        "summary": "List prices",
        "description": "Returns a list of flows, sorted by start_at date.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "resource_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "type_id",
            "in": "query",
            "description": "Filter records by the provided ID.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "2024-04-12",
              "minLength": 1
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "past"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Price"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Prices"
        ]
      }
    },
    "/bookings/resources/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_resource",
        "summary": "Get a resource",
        "description": "Retrieve a single resource identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ResourceItem"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Resources"
        ]
      }
    },
    "/bookings/resources": {
      "get": {
        "operationId": "list_resources",
        "summary": "List resources",
        "description": "Returns a list of resources, sorted by the order property.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "category",
            "in": "query",
            "description": "Filter records by the provided value.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "Equipment"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name, category, description.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "Hall chair",
              "minLength": 1
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ResourceItem"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Resources"
        ]
      }
    },
    "/bookings/tags/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "delete": {
        "operationId": "delete_bookings_tag",
        "summary": "Delete a tag",
        "description": "Delete a single tag identified by an ID.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "get": {
        "operationId": "get_bookings_tag",
        "summary": "Get a tag",
        "description": "Retrieve a single tag identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "put": {
        "operationId": "edit_bookings_tag",
        "summary": "Update a tag",
        "description": "Update a tag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagEdit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/bookings/tags": {
      "get": {
        "operationId": "list_bookings_tag",
        "summary": "List tags",
        "description": "Returns a list of tags, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A string to query by",
              "type": "string",
              "example": "suppliers",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tag"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "post": {
        "operationId": "create_bookings_tag",
        "summary": "Create a tag",
        "description": "Create a tag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditBookingsTagByID": {
                "operationId": "edit_bookings_tag",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteBookingsTagByID": {
                "operationId": "delete_bookings_tag",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "CreateBookingsTagResource": {
                "operationId": "create_bookings_tag_resource",
                "requestBody": {
                  "tag_id": "$response.body#/data/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/bookings/tag_categories/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the category to retrieve",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_bookings_tag_category",
        "summary": "Get a tag category",
        "description": "Retrieve a single tag category identified by ID",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TagCategory"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/bookings/tag_categories": {
      "get": {
        "operationId": "list_bookings_tag_categories",
        "summary": "List tag categories",
        "description": "Returns a list of tag categories, sorted alphabetically by name.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TagCategory"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/bookings/tag_resources": {
      "delete": {
        "operationId": "delete_bookings_tag_resource",
        "summary": "Delete a tag resource",
        "description": "Delete a single tag resource identified by a customer ID and tag ID, unlinking a customer from a tag.",
        "parameters": [
          {
            "name": "customer_id",
            "in": "query",
            "description": "Filter records by the provided ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          },
          {
            "name": "tag_id",
            "in": "query",
            "description": "Filter records by the provided ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "get": {
        "operationId": "list_bookings_tag_resources",
        "summary": "List tag resources",
        "description": "Returns a list of tag resources. A tag resource is the relational model linking a customer to a tag.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "customer_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "tag_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TagResource1"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "post": {
        "operationId": "create_bookings_tag_resource",
        "summary": "Create a tag resource",
        "description": "Create a tag resource linking a customer to a tag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagResourceAdd1"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TagResource1"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/bookings/types/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_type",
        "summary": "Get a type",
        "description": "Retrieve a single type identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Type"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Types"
        ]
      }
    },
    "/bookings/types": {
      "get": {
        "operationId": "list_types",
        "summary": "List types",
        "description": "Returns a list of types, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "wedding",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Type"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "bookings.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "bookings.read"
            ]
          }
        ],
        "tags": [
          "Types"
        ]
      }
    },
    "/calendar/categories/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_category",
        "summary": "Get a category",
        "description": "Retrieve a single category identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Category"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.read"
            ]
          }
        ],
        "tags": [
          "Categories"
        ]
      },
      "delete": {
        "operationId": "delete_category",
        "summary": "Delete a category",
        "description": "Delete a single category identified by ID. When a category is deleted, all events linked must be transferred to another category.",
        "parameters": [
          {
            "name": "replacement_id",
            "in": "query",
            "description": "The ID of the replacement record. All events linked to the record being deleted will be moved to the replacement record.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 21,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.write"
            ]
          }
        ],
        "tags": [
          "Categories"
        ]
      },
      "put": {
        "operationId": "edit_category",
        "summary": "Update a category",
        "description": "Update a single category identified by ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryWrite"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Category"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.write"
            ]
          }
        ],
        "tags": [
          "Categories"
        ]
      }
    },
    "/calendar/categories": {
      "get": {
        "operationId": "list_categories",
        "summary": "List categories",
        "description": "Returns a list of categories, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "Christmas Events",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Category"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.read"
            ]
          }
        ],
        "tags": [
          "Categories"
        ]
      },
      "post": {
        "operationId": "create_category",
        "summary": "Create a category",
        "description": "Create a category with the provided settings.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryWrite"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Category"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditCategoryByID": {
                "operationId": "edit_category",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "GetCategoryByID": {
                "operationId": "get_category",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteCategoryByID": {
                "operationId": "delete_category",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.write"
            ]
          }
        ],
        "tags": [
          "Categories"
        ]
      }
    },
    "/calendar/events/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_event",
        "summary": "Get an event",
        "description": "Retrieve a single event identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Event"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.read"
            ]
          }
        ],
        "tags": [
          "Events"
        ]
      },
      "delete": {
        "operationId": "delete_event",
        "summary": "Delete an event",
        "description": "Delete a single flow identified by ID.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.write"
            ]
          }
        ],
        "tags": [
          "Events"
        ]
      },
      "put": {
        "operationId": "edit_event",
        "summary": "Update an event",
        "description": "Update a single event identified by ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "description": "Edit an Event in the Calendar module.",
                "additionalProperties": false,
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "sequence_id": {
                        "description": "If the Event is part of a sequence, this field should contain the sequence ID from an existing Event in the sequence.",
                        "type": "integer",
                        "example": 213,
                        "minimum": 1,
                        "nullable": true
                      },
                      "name": {
                        "description": "The Event's name.",
                        "type": "string",
                        "example": "Gibson's Wedding"
                      },
                      "starts_at": {
                        "description": "Date and time the Event starts.",
                        "type": "string",
                        "format": "date-time",
                        "example": "2018-01-01T10:00:00Z"
                      },
                      "ends_at": {
                        "description": "Date and time the Event ends.",
                        "type": "string",
                        "format": "date-time",
                        "example": "2018-01-01T11:00:00Z"
                      },
                      "status": {
                        "description": "The current status of the Event.",
                        "type": "string",
                        "example": "confirmed",
                        "enum": [
                          "confirmed",
                          "cancelled",
                          "pending"
                        ]
                      },
                      "description": {
                        "description": "The description of the Event.",
                        "type": "string",
                        "example": "The reception of John Gibson and Anita Davis."
                      },
                      "category_id": {
                        "description": "The Event's category ID.",
                        "type": "integer",
                        "example": 25
                      }
                    }
                  },
                  {
                    "oneOf": [
                      {
                        "type": "object",
                        "properties": {
                          "all_sites": {
                            "description": "Whether the Event belongs to All Sites.",
                            "type": "boolean",
                            "example": true,
                            "enum": [
                              true
                            ]
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "site_ids": {
                            "description": "List of all site IDs the Event belongs to.",
                            "type": "array",
                            "items": {
                              "type": "integer"
                            },
                            "example": [
                              2,
                              7,
                              16
                            ]
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Event"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.write"
            ]
          }
        ],
        "tags": [
          "Events"
        ]
      }
    },
    "/calendar/events": {
      "get": {
        "operationId": "list_events",
        "summary": "List events",
        "description": "Returns a list of events, sorted by starts_at date.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "category_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name, starts_at.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "General Church Event",
              "minLength": 1
            }
          },
          {
            "name": "sequence_id",
            "in": "query",
            "description": "Filter records by the provided value.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 12,
              "minimum": 1
            }
          },
          {
            "name": "starts_after",
            "in": "query",
            "description": "Only include records that start after this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2024-01-24"
            }
          },
          {
            "name": "starts_before",
            "in": "query",
            "description": "Only include records that start before this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2024-02-24"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "confirmed",
              "default": "confirmed",
              "enum": [
                "cancelled",
                "confirmed",
                "pending"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Event"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.read"
            ]
          }
        ],
        "tags": [
          "Events"
        ]
      },
      "post": {
        "operationId": "create_event",
        "summary": "Create an event",
        "description": "Create an event with the provided settings.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "description": "Create an Event in the Calendar module.",
                "additionalProperties": false,
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "sequence_id": {
                        "description": "If the Event is part of a sequence, this field should contain the sequence ID from an existing Event in the sequence.",
                        "type": "integer",
                        "example": 213,
                        "minimum": 1,
                        "nullable": true
                      },
                      "name": {
                        "description": "The Event's name.",
                        "type": "string",
                        "example": "Gibson's Wedding"
                      },
                      "starts_at": {
                        "description": "Date and time the Event starts.",
                        "type": "string",
                        "format": "date-time",
                        "example": "2018-01-01T10:00:00Z"
                      },
                      "ends_at": {
                        "description": "Date and time the Event ends.",
                        "type": "string",
                        "format": "date-time",
                        "example": "2018-01-01T11:00:00Z"
                      },
                      "status": {
                        "description": "The current status of the Event.",
                        "type": "string",
                        "example": "confirmed",
                        "enum": [
                          "confirmed",
                          "cancelled",
                          "pending"
                        ]
                      },
                      "description": {
                        "description": "The description of the Event.",
                        "type": "string",
                        "example": "The reception of John Gibson and Anita Davis."
                      },
                      "category_id": {
                        "description": "The Event's category ID.",
                        "type": "integer",
                        "example": 25
                      }
                    },
                    "required": [
                      "name",
                      "starts_at",
                      "ends_at",
                      "status",
                      "category_id"
                    ]
                  },
                  {
                    "oneOf": [
                      {
                        "type": "object",
                        "properties": {
                          "all_sites": {
                            "description": "Whether the Event belongs to All Sites.",
                            "type": "boolean",
                            "example": true,
                            "enum": [
                              true
                            ]
                          }
                        },
                        "required": [
                          "all_sites"
                        ]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "site_ids": {
                            "description": "List of all site IDs the Event belongs to.",
                            "type": "array",
                            "items": {
                              "type": "integer"
                            },
                            "example": [
                              2,
                              7,
                              16
                            ]
                          }
                        },
                        "required": [
                          "site_ids"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Event"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditEventByID": {
                "operationId": "edit_event",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "GetEventByID": {
                "operationId": "get_event",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteEventByID": {
                "operationId": "delete_event",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "CreateEventNote": {
                "operationId": "create_event_note",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.write"
            ]
          }
        ],
        "tags": [
          "Events"
        ]
      }
    },
    "/calendar/events/{id}/notes": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the Event in question.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 1129842,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "list_event_notes",
        "summary": "List event notes",
        "description": "Returns a list of event notes, sorted by pinned, created_at.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Note1"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.read"
            ]
          }
        ],
        "tags": [
          "Events"
        ]
      },
      "post": {
        "operationId": "create_event_note",
        "summary": "Create an event note",
        "description": "Create a Note against an Event in the Calendar module.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteAdd1"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Note1"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.write"
            ]
          }
        ],
        "tags": [
          "Events"
        ]
      }
    },
    "/calendar/invites/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_invite",
        "summary": "Get an invite",
        "description": "Retrieve a single invite identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Invite"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.read"
            ]
          }
        ],
        "tags": [
          "Invites"
        ]
      }
    },
    "/calendar/invites": {
      "get": {
        "operationId": "list_invites",
        "summary": "List invites",
        "description": "Returns a list of invites for an event, sorted by modified_at.",
        "parameters": [
          {
            "name": "child_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "contact_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "event_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "statuses[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "accepted",
                "enum": [
                  "accepted",
                  "declined",
                  "not_sent",
                  "opened",
                  "pending"
                ]
              }
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: contact_first_name, contact_last_name, child_first_name, child_last_name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "Millie Hardingham",
              "minLength": 1
            }
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Invite"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.read"
            ]
          }
        ],
        "tags": [
          "Invites"
        ]
      }
    },
    "/calendar/signups": {
      "get": {
        "operationId": "list_signups",
        "summary": "List sign-ups",
        "description": "Returns a list of sign-ups, sorted by starts_at.",
        "parameters": [
          {
            "name": "event_id",
            "in": "query",
            "description": "Filter records by the provided ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "cancelled",
                "refunded",
                "reserved"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Signup"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.read"
            ]
          }
        ],
        "tags": [
          "Sign-Ups"
        ]
      }
    },
    "/calendar/tickets": {
      "get": {
        "operationId": "list_tickets",
        "summary": "List tickets",
        "description": "Returns a list of tickets, sorted by their order property.",
        "parameters": [
          {
            "name": "event_id",
            "in": "query",
            "description": "Filter records by the provided ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Ticket"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "calendar.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "calendar.read"
            ]
          }
        ],
        "tags": [
          "Tickets"
        ]
      }
    },
    "/children/children/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_child",
        "summary": "Get a child",
        "description": "Retrieve a single child identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Child"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Children"
        ]
      },
      "delete": {
        "operationId": "delete_child",
        "summary": "Delete a child",
        "description": "Delete a single child identified by ID.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Children"
        ]
      },
      "put": {
        "operationId": "edit_child",
        "summary": "Update a child",
        "description": "Update a single child identified by ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChildEdit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Child"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Children"
        ]
      }
    },
    "/children/children/{id}/notes": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the Child in question.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 1061,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "list_child_notes",
        "summary": "List child notes",
        "description": "Returns a list of child notes, sorted by pinned, created_at.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Note"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Children"
        ]
      },
      "post": {
        "operationId": "create_child_note",
        "summary": "Create a child note",
        "description": "Create a Note against a Child in the Children module.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Note"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Children"
        ]
      }
    },
    "/children/children": {
      "get": {
        "operationId": "list_children",
        "summary": "List children",
        "description": "Returns a list of flows, sorted alphabetically by last_name then first_name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived",
                "pending"
              ]
            }
          },
          {
            "name": "group_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: first_name, last_name, formal_name, email, address.",
            "schema": {
              "description": "A URL encoded string",
              "type": "string",
              "example": "Ali",
              "minLength": 1
            }
          },
          {
            "name": "tag_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Child"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Children"
        ]
      },
      "post": {
        "operationId": "create_child",
        "summary": "Create a child",
        "description": "Create a child with the provided settings.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChildAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Child"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditChildByID": {
                "operationId": "edit_child",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "GetChildByID": {
                "operationId": "get_child",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteChildByID": {
                "operationId": "delete_child",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "CreateChildNote": {
                "operationId": "create_child_note",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "CreateChildKeyDateResource": {
                "operationId": "create_child_key_date_resource",
                "requestBody": {
                  "resource": {
                    "id": "$response.body#/data/id"
                  }
                }
              },
              "CreateChildTagResource": {
                "operationId": "create_children_tag_resource",
                "requestBody": {
                  "person": {
                    "id": "$response.body#/data/id"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Children"
        ]
      }
    },
    "/children/custom_fields/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the custom field to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_children_custom_field",
        "summary": "Get a custom field",
        "description": "Retrieve a single custom field identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomField"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Custom Fields"
        ]
      }
    },
    "/children/custom_fields": {
      "get": {
        "operationId": "list_children_custom_fields",
        "summary": "List custom fields",
        "description": "Returns a list of custom fields",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CustomField"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Custom Fields"
        ]
      }
    },
    "/children/flows/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_children_flow",
        "summary": "Get a flow",
        "description": "Retrieve a single flow identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Flow"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Flows"
        ]
      }
    },
    "/children/flows": {
      "get": {
        "operationId": "list_children_flows",
        "summary": "List flows",
        "description": "Returns a list of flows, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter Flows by their status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "wedding",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Flow"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Flows"
        ]
      }
    },
    "/children/form_fields/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the form field to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 8,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_children_form_field",
        "summary": "Get a form field",
        "description": "Retrieve a single form field identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FormField"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Form Fields"
        ]
      }
    },
    "/children/form_fields": {
      "get": {
        "operationId": "list_children_form_fields",
        "summary": "List form fields",
        "description": "Returns a list of form fields",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "form_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FormField"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Form Fields"
        ]
      }
    },
    "/children/form_responses/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 45,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_children_form_response",
        "summary": "Get a form response",
        "description": "Retrieve a single form response identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FormResponse"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Form Responses"
        ]
      }
    },
    "/children/form_responses": {
      "get": {
        "operationId": "list_children_form_responses",
        "summary": "List form responses",
        "description": "Returns a list of form responses, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "form_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "statuses[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "active",
                "enum": [
                  "active",
                  "archived",
                  "spam"
                ]
              }
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: first_name, last_name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "sally",
              "minLength": 1
            }
          },
          {
            "name": "linked_response",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "boolean",
              "example": true
            }
          },
          {
            "name": "invite_response",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "boolean",
              "example": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FormResponse"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Form Responses"
        ]
      }
    },
    "/children/group_setups/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_group_setup",
        "summary": "Get a group setup",
        "description": "Retrieve a single group setup identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/GroupSetup"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Group Setups"
        ]
      }
    },
    "/children/group_setups": {
      "get": {
        "operationId": "list_group_setups",
        "summary": "List group setups",
        "description": "Returns a list of group setups, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GroupSetup"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Group Setups"
        ]
      }
    },
    "/children/group_members": {
      "get": {
        "operationId": "list_group_members",
        "summary": "List group members",
        "description": "Returns a list of group members, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "child_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "group_setup_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "group_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GroupMember"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Groups"
        ]
      }
    },
    "/children/groups/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_group",
        "summary": "Get a group",
        "description": "Retrieve a single group identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Group"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Groups"
        ]
      }
    },
    "/children/groups": {
      "parameters": [
        {
          "$ref": "#/components/parameters/PaginationPage"
        },
        {
          "$ref": "#/components/parameters/PaginationPerPage"
        },
        {
          "name": "group_setup_ids[]",
          "in": "query",
          "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
          "schema": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          }
        },
        {
          "name": "status",
          "in": "query",
          "description": "Filter records by the provided status.",
          "schema": {
            "type": "string",
            "example": "active",
            "default": "active",
            "enum": [
              "active",
              "archived"
            ]
          }
        },
        {
          "name": "q",
          "in": "query",
          "description": "Filter records with a fuzzy string match against the following properties: name.",
          "schema": {
            "description": "A URL encoded string",
            "type": "string",
            "example": "roots",
            "minLength": 1
          }
        }
      ],
      "get": {
        "operationId": "list_groups",
        "summary": "List groups",
        "description": "Returns a list of groups, sorted alphabetically by name.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Group"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Groups"
        ]
      }
    },
    "/children/key_dates/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_children_key_date",
        "summary": "Get a key date",
        "description": "Retrieve a single key date identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDate"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "delete": {
        "operationId": "delete_children_key_date",
        "summary": "Delete a key date",
        "description": "Delete a single key date identified by ID.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "put": {
        "operationId": "edit_children_key_date",
        "summary": "Update a key date",
        "description": "Update a single key date identified by ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyDateEdit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDate"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      }
    },
    "/children/key_dates": {
      "get": {
        "operationId": "list_children_key_dates",
        "summary": "List key dates",
        "description": "Returns a list of key dates, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "Joined",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyDate"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "post": {
        "operationId": "create_children_key_date",
        "summary": "Create a key date",
        "description": "Create a key date with the provided settings.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyDateAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDate"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditKeyDateByID": {
                "operationId": "edit_children_key_date",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "GetKeyDateByID": {
                "operationId": "get_children_key_date",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteKeyDateByID": {
                "operationId": "delete_children_key_date",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "AddKeyDateResource": {
                "operationId": "create_child_key_date_resource",
                "requestBody": {
                  "key_date_id": "$response.body#/data/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      }
    },
    "/children/key_date_resources/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 45,
            "minimum": 1
          }
        }
      ],
      "delete": {
        "operationId": "delete_child_key_date_resource",
        "summary": "Delete a key date resource",
        "description": "Delete a single key date resource identified by an ID, removing a child from a key date.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "put": {
        "operationId": "edit_child_key_date_resource",
        "summary": "Update a key date resource",
        "description": "Update a single key date resource identified by ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyDateResourceEdit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDateResource"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      }
    },
    "/children/key_date_resources": {
      "get": {
        "operationId": "list_child_key_date_resources",
        "summary": "List key date resources",
        "description": "Returns a list of key date resources, optionally filtered by key date or child ID. A key date resource records an instance of a key date for a child on a given date.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "key_date_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "child_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyDateResource"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "post": {
        "operationId": "create_child_key_date_resource",
        "summary": "Create a key date resource",
        "description": "Create a key date resource adding a child to a key date",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyDateResourceAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDateResource"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditKeyDateResourceByID": {
                "operationId": "edit_child_key_date_resource",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteKeyDateResourceByID": {
                "operationId": "delete_child_key_date_resource",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      }
    },
    "/children/parent_carer_relationships": {
      "get": {
        "operationId": "list_parent_carer_relationships",
        "summary": "List parent/carer relationships",
        "description": "Returns a list of parent/carer relationships.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "child_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ParentCarerRelationship"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Parent/Carers"
        ]
      }
    },
    "/children/tags/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "delete": {
        "operationId": "delete_children_tag",
        "summary": "Delete a tag",
        "description": "Delete a single tag identified by an ID.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "get": {
        "operationId": "get_children_tag",
        "summary": "Get a tag",
        "description": "Retrieve a single tag identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "put": {
        "operationId": "edit_children_tag",
        "summary": "Update a tag",
        "description": "Update a tag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagEdit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/children/tags": {
      "get": {
        "operationId": "list_children_tag",
        "summary": "List tags",
        "description": "Returns a list of tags, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A string to query by",
              "type": "string",
              "example": "holiday club",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tag"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "post": {
        "operationId": "create_children_tag",
        "summary": "Create a tag",
        "description": "Create a tag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditChildrenTagByID": {
                "operationId": "edit_children_tag",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteChildrenTagByID": {
                "operationId": "delete_children_tag",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "CreateChildrenTagResource": {
                "operationId": "create_children_tag_resource",
                "requestBody": {
                  "tag_id": "$response.body#/data/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/children/tag_categories/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the category to retrieve",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_children_tag_category",
        "summary": "Get a tag category",
        "description": "Retrieve a single tag category identified by ID",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TagCategory"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/children/tag_categories": {
      "get": {
        "operationId": "list_children_tag_categories",
        "summary": "List tag categories",
        "description": "Returns a list of tag categories, sorted alphabetically by name.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TagCategory"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/children/tag_resources": {
      "delete": {
        "operationId": "delete_children_tag_resource",
        "summary": "Delete a tag resource",
        "description": "Delete a single tag resource identified by a child ID and tag ID, unlinking a child from a tag.",
        "parameters": [
          {
            "name": "child_id",
            "in": "query",
            "description": "Filter records by the provided ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          },
          {
            "name": "tag_id",
            "in": "query",
            "description": "Filter records by the provided ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "get": {
        "operationId": "list_children_tag_resources",
        "summary": "List tag resources",
        "description": "Returns a list of tag resources. A tag resource is the relational model linking a child to a tag.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "child_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "tag_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TagResource2"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "post": {
        "operationId": "create_children_tag_resource",
        "summary": "Create a tag resource",
        "description": "Create a tag resource linking a child to a tag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagResourceAdd2"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TagResource2"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "children.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "children.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/giving/custom_fields/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the custom field to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_giving_custom_field",
        "summary": "Get a custom field",
        "description": "Retrieve a single custom field identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomField"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Custom Fields"
        ]
      }
    },
    "/giving/custom_fields": {
      "get": {
        "operationId": "list_giving_custom_fields",
        "summary": "List custom fields",
        "description": "Returns a list of custom fields",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CustomField"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Custom Fields"
        ]
      }
    },
    "/giving/donations": {
      "get": {
        "operationId": "list_donations",
        "summary": "List donations",
        "description": "Returns a list of donations, sorted by the most recent first.",
        "parameters": [
          {
            "name": "claim_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "fund_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "giver_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "pledge_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "before",
            "in": "query",
            "description": "Only include records before this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2024-02-24"
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "Only include records after this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2024-01-24"
            }
          },
          {
            "name": "giftaid_claimable",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "boolean",
              "example": true
            }
          },
          {
            "name": "giftaid_claimed",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "boolean",
              "example": true
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: cheque_number, method, fund_name, giver_reference, giver_first_name, giver_last_name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "Card"
            }
          },
          {
            "name": "statuses[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "example": "pending",
                "enum": [
                  "active",
                  "deleted",
                  "pending",
                  "refunded"
                ],
                "default": "active"
              }
            }
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Donation"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Donations"
        ]
      }
    },
    "/giving/flows/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_giving_flow",
        "summary": "Get a flow",
        "description": "Retrieve a single flow identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Flow"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Flows"
        ]
      }
    },
    "/giving/flows": {
      "get": {
        "operationId": "list_giving_flows",
        "summary": "List flows",
        "description": "Returns a list of flows, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "wedding",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Flow"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Flows"
        ]
      }
    },
    "/giving/funds/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_fund",
        "summary": "Get a fund",
        "description": "Retrieve a single fund identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Fund"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Funds"
        ]
      }
    },
    "/giving/funds": {
      "get": {
        "operationId": "list_funds",
        "summary": "List funds",
        "description": "Returns a list of funds, sorted by their order property.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "General Church Fund",
              "minLength": 1
            }
          },
          {
            "name": "visible_in_donate",
            "in": "query",
            "description": "Filter funds to only those visible in Donate.",
            "schema": {
              "type": "boolean",
              "example": true
            }
          },
          {
            "name": "visible_in_tap_to_donate",
            "in": "query",
            "description": "Filter funds to only those visible in Tap to Donate.",
            "schema": {
              "type": "boolean",
              "example": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Fund"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Funds"
        ]
      }
    },
    "/giving/givers/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_giver",
        "summary": "Get a giver",
        "description": "Retrieve a single giver identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Giver"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Givers"
        ]
      },
      "delete": {
        "operationId": "delete_giver",
        "summary": "Delete a giver",
        "description": "Delete a single giver identified by ID.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.write"
            ]
          }
        ],
        "tags": [
          "Givers"
        ]
      }
    },
    "/giving/givers/{id}/notes": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the Giver in question.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 717,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "list_giver_notes",
        "summary": "List giver notes",
        "description": "Returns a list of giver notes, sorted by pinned, created_at.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Note"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Givers"
        ]
      },
      "post": {
        "operationId": "create_giver_note",
        "summary": "Create a giver note",
        "description": "Create a Note against a Giver in the Giving module.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Note"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.write"
            ]
          }
        ],
        "tags": [
          "Givers"
        ]
      }
    },
    "/giving/givers": {
      "get": {
        "operationId": "list_givers",
        "summary": "List givers",
        "description": "Returns a list of givers, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: first_name, last_name, reference, bank_reference.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "Annabel",
              "minLength": 1
            }
          },
          {
            "name": "tag_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Giver"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Givers"
        ]
      }
    },
    "/giving/pledges/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_pledge",
        "summary": "Get a pledge",
        "description": "Retrieve a single pledge identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Pledge"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Pledges"
        ]
      }
    },
    "/giving/pledges": {
      "get": {
        "operationId": "list_pledges",
        "summary": "List pledges",
        "description": "Returns a list of pledges, sorted by their started_on property.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "fund_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "giver_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "starts_before",
            "in": "query",
            "description": "Only include records that start before this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2024-02-24"
            }
          },
          {
            "name": "starts_after",
            "in": "query",
            "description": "Only include records that starts after this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2024-01-24"
            }
          },
          {
            "name": "statuses[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "active",
                "enum": [
                  "active",
                  "cancelled",
                  "expired",
                  "future",
                  "incomplete"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Pledge"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Pledges"
        ]
      }
    },
    "/giving/tags/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "delete": {
        "operationId": "delete_giving_tag",
        "summary": "Delete a tag",
        "description": "Delete a single tag identified by an ID.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "get": {
        "operationId": "get_giving_tag",
        "summary": "Get a tag",
        "description": "Retrieve a single tag identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "put": {
        "operationId": "edit_giving_tag",
        "summary": "Update a tag",
        "description": "Update a tag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagEdit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/giving/tags": {
      "get": {
        "operationId": "list_giving_tag",
        "summary": "List tags",
        "description": "Returns a list of tags, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A string to query by",
              "type": "string",
              "example": "supporters",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tag"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "post": {
        "operationId": "create_giving_tag",
        "summary": "Create a tag",
        "description": "Create a tag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditGivingTagByID": {
                "operationId": "edit_giving_tag",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteGivingTagByID": {
                "operationId": "delete_giving_tag",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "CreateGivingTagResource": {
                "operationId": "create_giving_tag_resource",
                "requestBody": {
                  "tag_id": "$response.body#/data/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/giving/tag_categories/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the category to retrieve",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_giving_tag_category",
        "summary": "Get a tag category",
        "description": "Retrieve a single tag category identified by ID",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TagCategory"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/giving/tag_categories": {
      "get": {
        "operationId": "list_giving_tag_categories",
        "summary": "List tag categories",
        "description": "Returns a list of tag categories, sorted alphabetically by name.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TagCategory"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/giving/tag_resources": {
      "delete": {
        "operationId": "delete_giving_tag_resource",
        "summary": "Delete a tag resource",
        "description": "Delete a single tag resource identified by a giver ID and tag ID, unlinking a giver from a tag.",
        "parameters": [
          {
            "name": "giver_id",
            "in": "query",
            "description": "Filter records by the provided ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          },
          {
            "name": "tag_id",
            "in": "query",
            "description": "Filter records by the provided ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "get": {
        "operationId": "list_giving_tag_resources",
        "summary": "List tag resources",
        "description": "Returns a list of tag resources. A tag resource is the relational model linking a giver to a tag.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "giver_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "tag_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TagResource3"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.read"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      },
      "post": {
        "operationId": "create_giving_tag_resource",
        "summary": "Create a tag resource",
        "description": "Create a tag resource linking a giver to a tag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagResourceAdd3"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TagResource3"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "giving.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "giving.write"
            ]
          }
        ],
        "tags": [
          "Tags"
        ]
      }
    },
    "/network/custom_fields/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the custom field to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_network_custom_field",
        "summary": "Get a custom field",
        "description": "Retrieve a single custom field identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomField"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Custom Fields"
        ]
      }
    },
    "/network/custom_fields": {
      "get": {
        "operationId": "list_network_custom_fields",
        "summary": "List custom fields",
        "description": "Returns a list of custom fields",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CustomField"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Custom Fields"
        ]
      }
    },
    "/network/key_date_resources/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 45,
            "minimum": 1
          }
        }
      ],
      "delete": {
        "operationId": "delete_organisation_key_date_resource",
        "summary": "Delete a key date resource",
        "description": "Delete a single key date resource identified by an ID, removing an organisation from a key date.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "put": {
        "operationId": "edit_organisation_key_date_resource",
        "summary": "Update a key date resource",
        "description": "Update a single key date resource identified by ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyDateResourceEdit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDateResource"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      }
    },
    "/network/key_date_resources": {
      "get": {
        "operationId": "list_organisation_key_date_resources",
        "summary": "List key date resources",
        "description": "Returns a list of key date resources, optionally filtered by key date or organisation ID. A key date resource records an instance of a key date for an organisation on a given date.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "key_date_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "organisation_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyDateResource"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "post": {
        "operationId": "create_organisation_key_date_resource",
        "summary": "Create a key date resource",
        "description": "Create a key date resource adding an organisation to a key date",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyDateResourceAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDateResource"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditKeyDateResourceByID": {
                "operationId": "edit_organisation_key_date_resource",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteKeyDateResourceByID": {
                "operationId": "delete_organisation_key_date_resource",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      }
    },
    "/network/key_dates/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_network_key_date",
        "summary": "Get a key date",
        "description": "Retrieve a single key date identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDate"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "delete": {
        "operationId": "delete_network_key_date",
        "summary": "Delete a key date",
        "description": "Delete a single key date identified by ID.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "put": {
        "operationId": "edit_network_key_date",
        "summary": "Update a key date",
        "description": "Update a single key date identified by ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyDateEdit1"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDate"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      }
    },
    "/network/key_dates": {
      "get": {
        "operationId": "list_network_key_dates",
        "summary": "List key dates",
        "description": "Returns a list of key dates, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "Joined",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KeyDate"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      },
      "post": {
        "operationId": "create_network_key_date",
        "summary": "Create a key date",
        "description": "Create a key date with the provided settings.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyDateAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyDate"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            },
            "links": {
              "EditKeyDateByID": {
                "operationId": "edit_network_key_date",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "GetKeyDateByID": {
                "operationId": "get_network_key_date",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "DeleteKeyDateByID": {
                "operationId": "delete_network_key_date",
                "parameters": {
                  "id": "$response.body#/data/id"
                }
              },
              "AddKeyDateResource": {
                "operationId": "create_organisation_key_date_resource",
                "requestBody": {
                  "key_date_id": "$response.body#/data/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.write"
            ]
          }
        ],
        "tags": [
          "Key Dates"
        ]
      }
    },
    "/network/labels/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_network_label",
        "summary": "Get a label",
        "description": "Retrieve a single label identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Label"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Labels"
        ]
      }
    },
    "/network/labels": {
      "get": {
        "operationId": "list_network_labels",
        "summary": "List labels",
        "description": "Returns a list of labels, sorted by their order property.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "region",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Label"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Labels"
        ]
      }
    },
    "/network/label_resources": {
      "get": {
        "operationId": "list_network_label_resources",
        "summary": "List label resources",
        "description": "Returns a list of label resources",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "label_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "organisation_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LabelResource"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Labels"
        ]
      }
    },
    "/network/members": {
      "get": {
        "operationId": "list_network_members",
        "summary": "List members",
        "description": "List organisation members.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "role_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "organisation_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Member"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Members"
        ]
      }
    },
    "/network/organisations/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_organisation",
        "summary": "Get an organisation",
        "description": "Retrieve a single organisation identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Organisation"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Organisations"
        ]
      }
    },
    "/network/organisations/{id}/notes": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the Organisation in question.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 6,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "list_organisation_notes",
        "summary": "List organisation notes",
        "description": "Returns a list of organisation notes, sorted by pinned, created_at.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Note2"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Organisations"
        ]
      },
      "post": {
        "operationId": "create_organisation_note",
        "summary": "Create a organisation note",
        "description": "Create a Note against a Organisation in the Network module.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteAdd2"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Note2"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.write"
            ]
          }
        ],
        "tags": [
          "Organisations"
        ]
      }
    },
    "/network/organisations": {
      "get": {
        "operationId": "list_organisations",
        "summary": "List organisations",
        "description": "Returns a list of organisation, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name, reference (if enabled), meeting address city.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "Nottingham",
              "minLength": 1
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Organisation"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Organisations"
        ]
      }
    },
    "/network/roles/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_role",
        "summary": "Get a role",
        "description": "Retrieve a single role identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Role"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Roles"
        ]
      }
    },
    "/network/roles": {
      "get": {
        "operationId": "list_roles",
        "summary": "List roles",
        "description": "Returns a list of roles, sorted by their order property.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "region",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Role"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "network.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "network.read"
            ]
          }
        ],
        "tags": [
          "Roles"
        ]
      }
    },
    "/planning/library_items/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_planning_library_item",
        "summary": "Get a Library Item",
        "description": "Retrieve a single library item identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LibraryItem"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "LibraryItems"
        ]
      }
    },
    "/planning/library_items": {
      "get": {
        "operationId": "list_planning_library_items",
        "summary": "List library items",
        "description": "Returns a list of library items, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A string to query by",
              "type": "string",
              "example": "Worship",
              "minLength": 1
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          },
          {
            "name": "type_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LibraryItem"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "LibraryItems"
        ]
      }
    },
    "/planning/plans/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_plan",
        "summary": "Get a plan",
        "description": "Retrieve a single plan identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Plan"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "Plans"
        ]
      }
    },
    "/planning/plans/{id}/notes": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the Plan in question.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 807,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "list_plan_notes",
        "summary": "List plan notes",
        "description": "Returns a list of plan notes, sorted by pinned, created_at.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Note3"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "Plans"
        ]
      },
      "post": {
        "operationId": "create_plan_note",
        "summary": "Create a plan note",
        "description": "Create a Note against a Plan in the Planning module.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteAdd3"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Note3"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.write"
            ]
          }
        ],
        "tags": [
          "Plans"
        ]
      }
    },
    "/planning/plans": {
      "get": {
        "operationId": "list_plans",
        "summary": "List plans",
        "description": "Returns a list of plans, sorted by date and time.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A string to query by",
              "type": "string",
              "example": "Morning Service",
              "minLength": 1
            }
          },
          {
            "name": "starts_after",
            "in": "query",
            "description": "Only include records that start after this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2024-01-24"
            }
          },
          {
            "name": "starts_before",
            "in": "query",
            "description": "Only include records that start before this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2024-02-24"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "published",
              "default": "published",
              "enum": [
                "draft",
                "published"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Plan"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "Plans"
        ]
      }
    },
    "/planning/plan_items/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_plan_item",
        "summary": "Get a plan item",
        "description": "Retrieve a single plan item identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanItem"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "PlanItems"
        ]
      }
    },
    "/planning/plan_items": {
      "get": {
        "operationId": "list_plan_items",
        "summary": "List plan items",
        "description": "Returns a list of plan items, sorted by date.",
        "parameters": [
          {
            "name": "plan_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PlanItem"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "PlanItems"
        ]
      }
    },
    "/planning/songs/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_song",
        "summary": "Retrieve a song",
        "description": "Retrieve a single song, identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Song"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "Songs"
        ]
      }
    },
    "/planning/songs": {
      "get": {
        "operationId": "list_songs",
        "summary": "List songs",
        "description": "Returns a list of Songs, sorted alphabetically.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "last_used_after",
            "in": "query",
            "description": "Only include records that were used after this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2024-02-24"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name, ccli_number, copyright, administration.",
            "schema": {
              "description": "A string to query by",
              "type": "string",
              "example": "Blessed"
            }
          },
          {
            "name": "statuses[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "active",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              "default": [
                "active"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Song"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "Songs"
        ]
      }
    },
    "/planning/song_arrangements/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_planning_song_arrangement",
        "summary": "Retrieve a Song Arrangement",
        "description": "Retrieve a single song arrangement identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SongArrangement"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "SongArrangements"
        ]
      }
    },
    "/planning/song_arrangements": {
      "get": {
        "operationId": "list_planning_song_arrangements",
        "summary": "List song arrangements",
        "description": "Returns a list of song arrangements, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name, artist, song_ccli, song_name.",
            "schema": {
              "description": "A string to query by.",
              "type": "string",
              "example": "Amazing Grace",
              "minLength": 1
            }
          },
          {
            "name": "song_ids[]",
            "in": "query",
            "description": "Filter Song Arrangements by Song IDs.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "song_statuses",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "active",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              "default": [
                "active"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SongArrangement"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "SongArrangements"
        ]
      }
    },
    "/planning/templates/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_planning_template",
        "summary": "Get a template",
        "description": "Retrieve a single template identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Template"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "Templates"
        ]
      }
    },
    "/planning/templates": {
      "get": {
        "operationId": "list_planning_templates",
        "summary": "List templates",
        "description": "Returns a list of templates, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A string to query by",
              "type": "string",
              "example": "Morning Service",
              "minLength": 1
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "archived"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Template"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "Templates"
        ]
      }
    },
    "/planning/template_items/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_planning_template_item",
        "summary": "Get a template item",
        "description": "Retrieve a single template item identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TemplateItem"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "TemplateItems"
        ]
      }
    },
    "/planning/template_items": {
      "get": {
        "operationId": "list_planning_template_items",
        "summary": "List template items",
        "description": "Returns a list of template items, sorted by date.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "arrangement_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "library_item_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "template_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TemplateItem"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "TemplateItems"
        ]
      }
    },
    "/planning/types/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_planning_type",
        "summary": "Get a type",
        "description": "Retrieve a single type identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Type1"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "Types"
        ]
      }
    },
    "/planning/types": {
      "get": {
        "operationId": "list_planning_types",
        "summary": "List types",
        "description": "Returns a list of types, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A string to query by",
              "type": "string",
              "example": "Morning Service",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Type1"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "planning.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "planning.read"
            ]
          }
        ],
        "tags": [
          "Types"
        ]
      }
    },
    "/rotas/ministries/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 78,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_ministry",
        "summary": "Get a ministry",
        "description": "Retrieve a single ministry identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Ministry"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "rotas.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "rotas.read"
            ]
          }
        ],
        "tags": [
          "Ministries"
        ]
      }
    },
    "/rotas/ministries": {
      "get": {
        "operationId": "list_ministries",
        "summary": "List ministries",
        "description": "Returns a list of ministries, sorted by date created.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "statuses[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "active",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              "default": [
                "active"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A string to query by",
              "type": "string",
              "example": "Worship",
              "minLength": 1
            }
          },
          {
            "name": "ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Ministry"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "rotas.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "rotas.read"
            ]
          }
        ],
        "tags": [
          "Ministries"
        ]
      }
    },
    "/rotas/ministry_members": {
      "get": {
        "operationId": "list_ministry_members",
        "summary": "List ministry members",
        "description": "Returns a list of ministry members, sorted by date created.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "ministry_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "role_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "team_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Member1"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "rotas.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "rotas.read"
            ]
          }
        ],
        "tags": [
          "Members"
        ]
      }
    },
    "/rotas/ministry_teams/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 78,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_ministry_team",
        "summary": "Get a ministry team",
        "description": "Retrieve a single ministry team identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Team"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "rotas.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "rotas.read"
            ]
          }
        ],
        "tags": [
          "Teams"
        ]
      }
    },
    "/rotas/ministry_teams": {
      "get": {
        "operationId": "list_ministry_teams",
        "summary": "List ministry teams",
        "description": "Returns a list of ministry teams, sorted by date created.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "ministry_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "team_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Team"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "rotas.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "rotas.read"
            ]
          }
        ],
        "tags": [
          "Teams"
        ]
      }
    },
    "/rotas/roles": {
      "get": {
        "operationId": "list_rotas_roles",
        "summary": "List roles",
        "description": "Returns a list of roles, sorted by date created.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "member_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "ministry_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Role1"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "rotas.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "rotas.read"
            ]
          }
        ],
        "tags": [
          "Roles"
        ]
      }
    },
    "/smallgroups/attendances": {
      "get": {
        "operationId": "list_attendance_dates",
        "summary": "List attendance",
        "description": "Returns a list of attendance.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "group_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "before",
            "in": "query",
            "description": "Only include records before this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2025-04-07"
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "Only include records after this date.",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2025-04-07"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AttendanceDate"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Attendance"
        ]
      }
    },
    "/smallgroups/clusters/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_cluster",
        "summary": "Get a cluster",
        "description": "Retrieve a single cluster identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Cluster"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Clusters"
        ]
      },
      "delete": {
        "operationId": "delete_cluster",
        "summary": "Delete a cluster",
        "description": "Delete a single cluster identified by ID. Groups that are linked to this cluster will be unlinked. Smart Tags that reference this cluster will be affected.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.write"
            ]
          }
        ],
        "tags": [
          "Clusters"
        ]
      },
      "put": {
        "operationId": "edit_cluster",
        "summary": "Update a cluster",
        "description": "Update a single cluster identified by ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClusterWrite"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Cluster"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.write"
            ]
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/smallgroups/clusters": {
      "get": {
        "operationId": "list_clusters",
        "summary": "List clusters",
        "description": "Returns a list of clusters, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string",
              "type": "string",
              "example": "Nottingham",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Cluster"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Clusters"
        ]
      },
      "post": {
        "operationId": "create_cluster",
        "summary": "Create a cluster",
        "description": "Create a cluster with the provided settings.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClusterWrite"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Cluster"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.write"
            ]
          }
        ],
        "tags": [
          "Clusters"
        ]
      }
    },
    "/smallgroups/custom_fields/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the custom field to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_smallgroups_custom_field",
        "summary": "Get a custom field",
        "description": "Retrieve a single custom field identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomField"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Custom Fields"
        ]
      }
    },
    "/smallgroups/custom_fields": {
      "get": {
        "operationId": "list_smallgroups_custom_fields",
        "summary": "List custom fields",
        "description": "Returns a list of custom fields",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CustomField"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Custom Fields"
        ]
      }
    },
    "/smallgroups/groups/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_group1",
        "summary": "Get a group",
        "description": "Retrieve a single group identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Group1"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Groups"
        ]
      }
    },
    "/smallgroups/groups/{id}/notes": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the Group in question.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "example": 112,
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "list_group_notes",
        "summary": "List group notes",
        "description": "Returns a list of group notes, sorted by pinned, created_at.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Note4"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Groups"
        ]
      },
      "post": {
        "operationId": "create_group_note",
        "summary": "Create a group note",
        "description": "Create a Note against a Group in the Small Groups module.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteAdd4"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Note4"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.write"
            ]
          }
        ],
        "tags": [
          "Groups"
        ]
      }
    },
    "/smallgroups/groups": {
      "get": {
        "operationId": "list_groups1",
        "summary": "List groups",
        "description": "Returns a list of groups, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "cluster_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "frequency",
            "in": "query",
            "description": "Filter records by the provided value.",
            "schema": {
              "type": "string",
              "example": "weekly",
              "enum": [
                "weekly",
                "fortnightly",
                "monthly",
                "quarterly",
                "custom"
              ]
            }
          },
          {
            "name": "days[]",
            "in": "query",
            "description": "Filter records by the provided value.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "wednesday",
                "enum": [
                  "monday",
                  "tuesday",
                  "wednesday",
                  "thursday",
                  "friday",
                  "saturday",
                  "sunday"
                ]
              }
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name, location.",
            "schema": {
              "description": "A URL encoded string",
              "type": "string",
              "example": "cedar cottage",
              "minLength": 1
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Filter records to view only those that have a date range that is in the past, is active or is in the future.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "past",
                "active",
                "active_future",
                "future"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Group1"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Groups"
        ]
      }
    },
    "/smallgroups/labels/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_smallgroups_label",
        "summary": "Get a label",
        "description": "Retrieve a single label identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Label"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Labels"
        ]
      }
    },
    "/smallgroups/labels": {
      "get": {
        "operationId": "list_smallgroups_labels",
        "summary": "List labels",
        "description": "Returns a list of labels, sorted by their order property.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter records with a fuzzy string match against the following properties: name.",
            "schema": {
              "description": "A URL encoded string.",
              "type": "string",
              "example": "theme",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Label"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Labels"
        ]
      }
    },
    "/smallgroups/label_resources": {
      "get": {
        "operationId": "list_smallgroups_label_resources",
        "summary": "List label resources",
        "description": "Returns a list of label resources",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "label_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "group_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LabelResource"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Labels"
        ]
      }
    },
    "/smallgroups/members/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_small_groups_member",
        "summary": "Get a member",
        "description": "Retrieve a single member identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Member2"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Members"
        ]
      },
      "delete": {
        "operationId": "delete_small_groups_member",
        "summary": "Delete a member",
        "description": "Delete a single member identified by ID.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.write"
            ]
          }
        ],
        "tags": [
          "Members"
        ]
      },
      "put": {
        "operationId": "edit_small_groups_member",
        "summary": "Update a member",
        "description": "Update a single member identified by ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemberEdit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Member2"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.write"
            ]
          }
        ],
        "tags": [
          "Members"
        ]
      }
    },
    "/smallgroups/members": {
      "get": {
        "operationId": "list_small_groups_members",
        "summary": "List members",
        "description": "Returns a list of members, sorted alphabetically by name.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          },
          {
            "name": "child_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "contact_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "role_id",
            "in": "query",
            "description": "Filter records by the provided value.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1
            }
          },
          {
            "name": "group_ids[]",
            "in": "query",
            "description": "Filter records to those matching values in the provided array. This filter uses the logical OR operator.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              }
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter records by the provided status.",
            "schema": {
              "type": "string",
              "example": "active",
              "default": "active",
              "enum": [
                "active",
                "pending"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Member2"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Members"
        ]
      },
      "post": {
        "operationId": "create_small_groups_members",
        "summary": "Create members",
        "description": "Create a member with the provided settings.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemberAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Member2"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.write"
            ]
          }
        ],
        "tags": [
          "Members"
        ]
      }
    },
    "/smallgroups/roles/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the record to retrieve.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      ],
      "get": {
        "operationId": "get_role1",
        "summary": "Get a role",
        "description": "Retrieve a single role identified by ID.",
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Role2"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Roles"
        ]
      },
      "delete": {
        "operationId": "delete_small_groups_role",
        "summary": "Delete a role",
        "description": "Delete a single role identified by ID. Deleting a role is irreversible and will un-assign the role from every role holder for all past, active and future groups. Any Smart Tags that reference this role will be affected.",
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.write"
            ]
          }
        ],
        "tags": [
          "Roles"
        ]
      },
      "put": {
        "operationId": "edit_small_groups_role",
        "summary": "Update a role",
        "description": "Update a single role identified by ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoleEdit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Role2"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.write"
            ]
          }
        ],
        "tags": [
          "Roles"
        ]
      }
    },
    "/smallgroups/roles": {
      "get": {
        "operationId": "list_roles1",
        "summary": "List roles",
        "description": "Returns a list of roles, sorted by their order property.",
        "parameters": [
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Role2"
                      }
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "pagination"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.read"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.read"
            ]
          }
        ],
        "tags": [
          "Roles"
        ]
      },
      "post": {
        "operationId": "create_small_groups_role",
        "summary": "Create a role",
        "description": "Create a role with the provided settings.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoleAdd"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Role2"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "api_enabled_user": [
              "full_access"
            ]
          },
          {
            "api_enabled_user": [
              "smallgroups.write"
            ]
          },
          {
            "oauth_app": [
              "full_access"
            ]
          },
          {
            "oauth_app": [
              "smallgroups.write"
            ]
          }
        ],
        "tags": [
          "Roles"
        ]
      }
    }
  },
  "components": {
    "parameters": {
      "PaginationPage": {
        "in": "query",
        "name": "page",
        "description": "Page number of items to return",
        "schema": {
          "type": "integer",
          "example": 2,
          "default": 1,
          "minimum": 1
        }
      },
      "PaginationPerPage": {
        "in": "query",
        "name": "per_page",
        "description": "Number of items to return per request",
        "schema": {
          "type": "integer",
          "example": 10,
          "default": 50,
          "maximum": 250,
          "minimum": 1
        }
      }
    },
    "schemas": {
      "Account": {
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of your Account.",
            "type": "string",
            "example": "Kings Hope Church"
          },
          "uuid": {
            "description": "The Account's unique identifier.",
            "type": "string",
            "format": "uuid",
            "example": "f1bacf7c-6e18-41f4-b94a-4a93887d6db4"
          },
          "timezone": {
            "description": "The Account timezone, in [IANA Time Zone Database](http://www.iana.org/time-zones) format.",
            "type": "string",
            "example": "Europe/London"
          },
          "currency": {
            "description": "The Account currency.",
            "type": "string",
            "format": "iso-4217",
            "example": "GBP"
          },
          "language": {
            "description": "The Account language.",
            "type": "string",
            "format": "IETF BCP47",
            "example": "en_GB"
          },
          "give2_keyword": {
            "description": "The give2 reference for your Account, only available in UK and North America",
            "type": "string",
            "example": "KingsHope",
            "nullable": true
          },
          "first_day_of_week": {
            "description": "The start of the week for your Account.",
            "type": "string",
            "example": "Sunday"
          },
          "data_protection_title": {
            "description": "The title for the data protection notice for your Account.",
            "type": "string",
            "example": "Kings Hope Privacy policy"
          },
          "data_protection_body": {
            "description": "The Account's html data protection statement.",
            "type": "string",
            "example": "<span style=\"color: #a7509f;\">helloworld</span>"
          },
          "data_protection_help": {
            "description": "The helper text that sits alongside the \"I accept...\" checkbox.",
            "type": "string",
            "example": "It is important that you read our privacy policy, to understand how your personal data is used."
          },
          "email_open_tracking": {
            "description": "Tracks whether an email is opened or not.",
            "type": "boolean",
            "example": true
          },
          "enforce_mfa": {
            "description": "Whether to enforce multi-factor authentication to all users.",
            "type": "boolean",
            "example": true
          },
          "billing_address": {
            "$ref": "#/components/schemas/Site/properties/address"
          },
          "billing_region": {
            "description": "The region for the billing of your Account.",
            "type": "string",
            "example": "Washington"
          },
          "billing_contact": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name": {
                "description": "The Contact's full name.",
                "type": "string",
                "example": "Esther Louise Daniels"
              },
              "telephone": {
                "description": "The Contact's telephone.",
                "type": "string",
                "example": "01154960565"
              },
              "email": {
                "description": "The Contact's email.",
                "type": "string",
                "example": "estherdaniels23@kingshopechurch.com"
              }
            },
            "required": [
              "name",
              "telephone",
              "email"
            ]
          },
          "data_protection_contact": {
            "$ref": "#/components/schemas/Account/properties/billing_contact"
          },
          "account_contact": {
            "$ref": "#/components/schemas/Account/properties/billing_contact"
          },
          "application": {
            "description": "Whether the Account is a ChurchSuite or CharitySuite account.",
            "type": "string",
            "example": "charitysuite",
            "enum": [
              "charitysuite",
              "churchsuite"
            ]
          },
          "subdomain": {
            "description": "The subdomain of your Account.",
            "type": "string",
            "example": "kingshope"
          },
          "feature_flags": {
            "description": "A list of feature flags enabled for the Account.",
            "type": "array",
            "items": {
              "type": "string",
              "description": "A single feature flag that is enabled for the Account.",
              "example": "new-feature-flag"
            },
            "example": [
              "feature-flag-1",
              "feature-flag-2"
            ]
          },
          "created_at": {
            "description": "Date and time the Account was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Account.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Account details was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Account details.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "uuid",
          "timezone",
          "currency",
          "language",
          "give2_keyword",
          "first_day_of_week",
          "data_protection_title",
          "data_protection_body",
          "data_protection_help",
          "email_open_tracking",
          "enforce_mfa",
          "billing_address",
          "billing_region",
          "billing_contact",
          "data_protection_contact",
          "account_contact",
          "application",
          "subdomain",
          "feature_flags",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Brand": {
        "description": "An account Brand",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Brand's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The name of the Brand.",
            "type": "string",
            "example": "General Kings Hope Church."
          },
          "default": {
            "description": "Whether this is the account's default Brand or not.",
            "type": "boolean",
            "example": true
          },
          "emblem": {
            "description": "A Brand Emblem, to use as a square avatar or icon",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "px_16": {
                "description": "The emblem url for a 16x16px image.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/2mCEi8cf/brand/emblem_bWxJxu_16.png"
              },
              "px_32": {
                "description": "The Emblem url for a 32x32px image.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/2mCEi8cf/brand/emblem_bWxJxu_32.png"
              },
              "px_64": {
                "description": "The Emblem url for a 64x64px image.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/2mCEi8cf/brand/emblem_bWxJxu_64.png"
              },
              "px_128": {
                "description": "The Emblem url for a 128x128px image.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/2mCEi8cf/brand/emblem_bWxJxu_128.png"
              },
              "px_152": {
                "description": "The Emblem url for a 152x152px image.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/2mCEi8cf/brand/emblem_bWxJxu_152.png"
              },
              "px_200": {
                "description": "The Emblem url for a 200x200px image.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/2mCEi8cf/brand/emblem_bWxJxu_200.png"
              },
              "uploaded_at": {
                "description": "Date and time the Emblem was uploaded at.",
                "type": "string",
                "format": "date-time",
                "example": "2014-04-25T10:10:32Z"
              }
            },
            "required": [
              "px_16",
              "px_32",
              "px_64",
              "px_128",
              "px_152",
              "px_200",
              "uploaded_at"
            ]
          },
          "logo": {
            "description": "The Logo associated with a brand.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "height": {
                "description": "The height of the Logo in pixels.",
                "type": "integer",
                "example": 200
              },
              "width": {
                "description": "The width of the Logo in pixels.",
                "type": "integer",
                "example": 1000
              },
              "url": {
                "description": "The url for the Logo.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/2mCEi8cf/brand/logo_IgBBdl.png"
              },
              "uploaded_at": {
                "description": "Date and time the Logo was uploaded at.",
                "type": "string",
                "format": "date-time",
                "example": "2014-04-25T10:10:32Z"
              }
            },
            "required": [
              "width",
              "height",
              "url",
              "uploaded_at"
            ]
          },
          "colour": {
            "description": "Deprecated, do not use - The Brand's hexadecimal colour value.",
            "type": "string",
            "example": "#ab12cd"
          },
          "color": {
            "description": "The Brand's hexadecimal colour value.",
            "type": "string",
            "example": "#ab12cd"
          },
          "email_font": {
            "description": "The Brand's font for emails.",
            "type": "string",
            "example": "Helvetica",
            "default": "Open Sans",
            "enum": [
              "Andale Mono",
              "Arial Black",
              "Arial",
              "Book Antiqua",
              "Courier New",
              "Georgia",
              "Helvetica",
              "Montserrat",
              "Open Sans",
              "Roboto",
              "Tahoma",
              "Terminal",
              "Times New Roman",
              "Trebuchet MS",
              "Verdana"
            ]
          },
          "email_footer": {
            "description": "The Brand's html for email footers.",
            "type": "string",
            "example": "<span style=\"color: #4697c9; font-size: 8pt;\"><a style=\"color: #4697c9;\" href=\"https://kingshope.churchsuite\" target=\"_blank\" rel=\"noopener\">Kings Hope Church</a>&dagger;Easter Park&dagger;Lenton Lane&dagger;Nottingham&dagger;NG7 2PX</span>"
          },
          "created_at": {
            "description": "Date and time the Brand was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Brand.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Brand was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Brand.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "default",
          "emblem",
          "logo",
          "color",
          "email_font",
          "email_footer",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Info": {
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of your Account.",
            "type": "string",
            "example": "Kings Hope Church"
          },
          "uuid": {
            "description": "The Account's unique identifier.",
            "type": "string",
            "format": "uuid",
            "example": "f1bacf7c-6e18-41f4-b94a-4a93887d6db4"
          },
          "timezone": {
            "description": "The Account timezone, in [IANA Time Zone Database](http://www.iana.org/time-zones) format.",
            "type": "string",
            "example": "Europe/London"
          },
          "currency": {
            "description": "The Account currency.",
            "type": "string",
            "format": "iso-4217",
            "example": "GBP"
          },
          "language": {
            "description": "The Account language.",
            "type": "string",
            "format": "IETF BCP47",
            "example": "en_GB"
          },
          "first_day_of_week": {
            "description": "The start of the week for your Account.",
            "type": "string",
            "example": "Sunday"
          },
          "application": {
            "description": "Whether the Account is a ChurchSuite or CharitySuite account.",
            "type": "string",
            "example": "charitysuite",
            "enum": [
              "charitysuite",
              "churchsuite"
            ]
          },
          "subdomain": {
            "description": "The subdomain of your Account.",
            "type": "string",
            "example": "kingshope"
          },
          "feature_flags": {
            "description": "A list of feature flags enabled for the Account.",
            "type": "array",
            "items": {
              "type": "string",
              "description": "A single feature flag that is enabled for the Account.",
              "example": "new-feature-flag"
            },
            "example": [
              "feature-flag-1",
              "feature-flag-2"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "uuid",
          "timezone",
          "currency",
          "language",
          "first_day_of_week",
          "application",
          "subdomain",
          "feature_flags"
        ]
      },
      "Pagination": {
        "type": "object",
        "properties": {
          "num_results": {
            "description": "The total number of results available",
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "per_page": {
            "description": "The requested number of results per page",
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          "page": {
            "description": "The current page of results",
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          "next_page": {
            "description": "The page number of the next page of results, if there is one",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "nullable": true
          },
          "prev_page": {
            "description": "The page number of the previous page of results, if there is one",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "num_results",
          "per_page",
          "page",
          "next_page",
          "prev_page"
        ]
      },
      "Site": {
        "description": "Organisations Site data",
        "type": "object",
        "properties": {
          "id": {
            "description": "The ID of the Site.",
            "type": "integer",
            "example": 1
          },
          "name": {
            "description": "The name of the Site.",
            "type": "string",
            "example": "Nottingham"
          },
          "initials": {
            "description": "The initials of the Site.",
            "type": "string",
            "example": "NOT"
          },
          "color": {
            "description": "The hex colour value of the Site.",
            "type": "string",
            "example": "#ff4c67"
          },
          "order": {
            "description": "The Sites order of precedence.",
            "type": "integer",
            "example": 1
          },
          "address": {
            "description": "A street Address.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "line_1": {
                "description": "The first line of the Address",
                "type": "string",
                "example": "Floor 2"
              },
              "line_2": {
                "description": "The second line of the Address",
                "type": "string",
                "example": "1 Broadway"
              },
              "line_3": {
                "description": "The third line of the Address",
                "type": "string",
                "example": "Lace Market",
                "nullable": true
              },
              "city": {
                "description": "The city of the Address",
                "type": "string",
                "example": "Nottingham"
              },
              "county": {
                "description": "The county of the Address",
                "type": "string",
                "example": "Nottinghamshire"
              },
              "country": {
                "description": "The country of the Address, in ISO3166 alpha 2 format",
                "type": "string",
                "example": "GB",
                "maxLength": 2,
                "minLength": 2,
                "nullable": true
              },
              "postcode": {
                "description": "The postcode of the Address",
                "type": "string",
                "example": "NG1 1PR"
              },
              "latitude": {
                "description": "The latitude of the Address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": 52.952089,
                "nullable": true
              },
              "longitude": {
                "description": "The longitude of the Address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": -1.1448,
                "nullable": true
              }
            },
            "required": [
              "line_1",
              "line_2",
              "line_3",
              "city",
              "county",
              "country",
              "postcode",
              "latitude",
              "longitude"
            ]
          },
          "created_at": {
            "description": "Date and time the Site was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user that created the Site.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Site was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user that last modified the Site.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "initials",
          "color",
          "order",
          "address",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "StripeAccount": {
        "description": "A single Stripe account, from the Stripe integration",
        "type": "object",
        "properties": {
          "id": {
            "description": "The ChurchSuite ID for the Stripe account.",
            "type": "integer",
            "example": 1
          },
          "name": {
            "description": "The name of the Stripe account.",
            "type": "string",
            "example": "The Kings Hope Current Account"
          },
          "publishable_key": {
            "description": "The publishable key of the Stripe account.",
            "type": "string",
            "example": "pk_test_qblFNYngBkEdjEZ16jxxoWSM"
          },
          "default": {
            "description": "Whether this is the default Stripe account or not.",
            "type": "boolean",
            "example": true
          },
          "payment_methods": {
            "description": "List of payment methods for the Stripe account.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "bancontact",
                "card",
                "eps",
                "giropay",
                "ideal",
                "p24",
                "sepa_debit",
                "sofort"
              ]
            },
            "example": [
              "card",
              "ideal"
            ]
          },
          "fund_ids": {
            "description": "Fund IDs this Stripe account is responsible for handling donations to, or null if the Giving module is not installed on your account.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              1,
              4,
              8
            ],
            "nullable": true
          },
          "type_ids": {
            "description": "Booking type IDs this Stripe account is responsible for handling charges for, or null if the Bookings module is not installed on your account.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              3
            ],
            "nullable": true
          },
          "category_ids": {
            "description": "Category IDs this Stripe account is responsible for handling sign-up transactions for, or null if the Calendar module is not installed on your account.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              10,
              15
            ],
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Stripe account was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Stripe account.",
            "type": "string",
            "example": "helen",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "publishable_key",
          "default",
          "payment_methods",
          "fund_ids",
          "type_ids",
          "category_ids",
          "modified_at",
          "modified_by"
        ]
      },
      "User": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The User's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "username": {
            "description": "The User's username.",
            "type": "string",
            "example": "jenny"
          },
          "contact_id": {
            "description": "The User's Contact ID if the User is linked to a Contact.",
            "type": "integer",
            "example": 6,
            "nullable": true
          },
          "name": {
            "description": "The name of the User.",
            "type": "string",
            "example": "Jenny"
          },
          "email": {
            "description": "The User's email address.",
            "type": "string",
            "format": "email",
            "example": "jenny@kingshope.com"
          },
          "logins": {
            "description": "The number of times the User has logged in.",
            "type": "integer",
            "example": 678,
            "minimum": 0
          },
          "last_login": {
            "description": "Date and time the User last logged in.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "user_type": {
            "description": "The permission type of the User, admins have full access, User permissions can be managed.",
            "type": "string",
            "example": "admin",
            "enum": [
              "admin",
              "user"
            ]
          },
          "ical_url": {
            "description": "The url for the User's ical feed.",
            "type": "string",
            "format": "uri",
            "example": "https://examplechurch.churchsuite.com/ical/jenny-pnnnx6o6gdzdgyzp0hl4.ics"
          },
          "image": {
            "description": "A collection of different sized variations of an Image.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "thumbnail": {
                "description": "The thumbnail Image url. Thumbnail images are 128x128px.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_thumb.jpg"
              },
              "small": {
                "description": "The small resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_sm.jpg"
              },
              "medium": {
                "description": "The medium resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_md.jpg"
              },
              "large": {
                "description": "The large resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_lg.jpg"
              },
              "uploaded_at": {
                "description": "Date and time the Image was uploaded at.",
                "type": "string",
                "format": "date-time",
                "example": "2014-04-25T10:10:32Z",
                "nullable": true
              }
            },
            "required": [
              "thumbnail",
              "small",
              "medium",
              "large",
              "uploaded_at"
            ]
          },
          "all_sites": {
            "description": "Whether the User belongs to all sites or not.",
            "type": "boolean",
            "example": false
          },
          "site_ids": {
            "description": "List of all site IDs the User belongs to.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              1,
              5,
              10
            ]
          },
          "mfa_enabled": {
            "description": "Whether or not the User has multi factor authentication enabled.",
            "type": "boolean",
            "example": true
          },
          "email_signature": {
            "description": "The User's email signature.",
            "type": "string",
            "example": "<h2><span style=\"font-size: 14pt;\">Jenny Cooper</span></h2>"
          },
          "status": {
            "description": "Current status of the User.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "created_at": {
            "description": "Date and time the User was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created this User.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the User was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified this User.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "username",
          "contact_id",
          "name",
          "email",
          "logins",
          "last_login",
          "user_type",
          "ical_url",
          "image",
          "all_sites",
          "site_ids",
          "mfa_enabled",
          "email_signature",
          "status",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "UserGroup": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The User Group's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The name of the User Group.",
            "type": "string",
            "example": "Pastors"
          },
          "visibility_restricted": {
            "description": "Whether this User Group is only visible to Users who are part of it.",
            "type": "boolean"
          },
          "email": {
            "description": "The User Group's email address.",
            "type": "string",
            "format": "email",
            "example": "pastors@kingshope.com",
            "nullable": true
          },
          "email_from": {
            "description": "The User Group's email \"From\" name.",
            "type": "string",
            "example": "Kings Hope Pastors",
            "nullable": true
          },
          "email_signature": {
            "description": "The email signature for outbound emails from this User Group.",
            "type": "string",
            "example": "<h2><span style=\"font-size: 14pt;\">The Kings Hope Pastors</span></h2>"
          },
          "created_at": {
            "description": "Date and time the User Group was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created this User Group.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the User Group was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified this User Group.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "visibility_restricted",
          "name",
          "email",
          "email_from",
          "email_signature",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Contact": {
        "description": "A single Contact from the Address Book module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Contact's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "first_name": {
            "description": "The Contact's first name.",
            "type": "string",
            "example": "Charlotte"
          },
          "middle_name": {
            "description": "The Contact's middle name.",
            "type": "string",
            "example": "Deborah"
          },
          "last_name": {
            "description": "The Contact's last name.",
            "type": "string",
            "example": "MacDonald"
          },
          "title": {
            "description": "The Contact's title.",
            "type": "string",
            "example": "Prof"
          },
          "formal_name": {
            "description": "The Contact's formal name.",
            "type": "string",
            "example": "Her majesty of MacDonald"
          },
          "former_name": {
            "description": "The Contact's former name.",
            "type": "string",
            "example": "Chantelle"
          },
          "sex": {
            "description": "The Contact's sex.",
            "type": "string",
            "example": "female",
            "enum": [
              "female",
              "male"
            ],
            "nullable": true
          },
          "date_of_birth": {
            "description": "The Contact's date of birth.",
            "type": "string",
            "format": "date",
            "example": "1957-04-27",
            "nullable": true
          },
          "marital_status": {
            "description": "The Contact's marital status.",
            "type": "string",
            "example": "single",
            "enum": [
              "single",
              "married",
              "engaged",
              "partnered",
              "separated",
              "divorced",
              "widowed"
            ],
            "nullable": true
          },
          "spouse_id": {
            "description": "The Contact ID for the Contact's spouse.",
            "type": "integer",
            "example": 656,
            "minimum": 1,
            "nullable": true
          },
          "address": {
            "description": "A street Address.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "line_1": {
                "description": "The first line of the Address",
                "type": "string",
                "example": "Floor 2"
              },
              "line_2": {
                "description": "The second line of the Address",
                "type": "string",
                "example": "1 Broadway"
              },
              "line_3": {
                "description": "The third line of the Address",
                "type": "string",
                "example": "Lace Market",
                "nullable": true
              },
              "city": {
                "description": "The city of the Address",
                "type": "string",
                "example": "Nottingham"
              },
              "county": {
                "description": "The county of the Address",
                "type": "string",
                "example": "Nottinghamshire"
              },
              "country": {
                "description": "The country of the Address, in ISO3166 alpha 2 format",
                "type": "string",
                "example": "GB",
                "maxLength": 2,
                "minLength": 2,
                "nullable": true
              },
              "postcode": {
                "description": "The postcode of the Address",
                "type": "string",
                "example": "NG1 1PR"
              },
              "latitude": {
                "description": "The latitude of the Address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": 52.952089,
                "nullable": true
              },
              "longitude": {
                "description": "The longitude of the Address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": -1.1448,
                "nullable": true
              }
            },
            "required": [
              "line_1",
              "line_2",
              "line_3",
              "city",
              "county",
              "country",
              "postcode",
              "latitude",
              "longitude"
            ]
          },
          "telephone": {
            "description": "The Contact's telephone number.",
            "type": "string",
            "example": "02896496646"
          },
          "mobile": {
            "description": "The Contact's mobile number.",
            "type": "string",
            "example": "07700900519"
          },
          "work_telephone": {
            "description": "The Contact's work telephone number.",
            "type": "string",
            "example": "02079460197"
          },
          "email": {
            "description": "The Contact's email address.",
            "type": "string",
            "format": "email",
            "example": "charlottefinnagan@kingshopechurch.com",
            "nullable": true
          },
          "job": {
            "description": "The occupation of the Contact.",
            "type": "string",
            "example": "Plumber"
          },
          "employer": {
            "description": "The employer of the Contact.",
            "type": "string",
            "example": "Spring Plumbing"
          },
          "custom_fields": {
            "description": "Custom Field responses for this resource",
            "type": "array",
            "items": {
              "type": "object",
              "description": "Custom Field responses for this resource",
              "properties": {
                "id": {
                  "description": "The ID of the Custom Field",
                  "type": "integer",
                  "example": 1
                },
                "field_type": {
                  "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                  "type": "string",
                  "example": "text",
                  "enum": [
                    "checkbox",
                    "date",
                    "email",
                    "phone",
                    "radio",
                    "select",
                    "text",
                    "textarea"
                  ]
                },
                "value": {
                  "nullable": true,
                  "oneOf": [
                    {
                      "type": "string",
                      "description": "The raw value of a text, textarea, email, phone or date.",
                      "example": "support@churchsuite.com"
                    },
                    {
                      "type": "object",
                      "description": "The UUID of the selected response for a radio or select field.",
                      "example": {
                        "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                      },
                      "properties": {
                        "id": {
                          "description": "The UUID",
                          "type": "string",
                          "format": "uuid",
                          "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                          "maxLength": 36,
                          "minLength": 36
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "array",
                      "description": "An array of objects which contains the UUIDs of the selected responses for a checkbox field. If no checkboxes are selected an empty array will be returned.",
                      "items": {
                        "type": "object",
                        "description": "The UUID of the selected response for a radio or select field.",
                        "example": {
                          "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                        },
                        "properties": {
                          "id": {
                            "description": "The UUID",
                            "type": "string",
                            "format": "uuid",
                            "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                            "maxLength": 36,
                            "minLength": 36
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false
                      }
                    }
                  ]
                }
              },
              "required": [
                "id",
                "value",
                "field_type"
              ],
              "additionalProperties": false
            }
          },
          "communication": {
            "description": "The person's communication preferences.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "general_email": {
                "description": "Whether this person has consented to receiving general emails.",
                "type": "boolean",
                "example": false
              },
              "general_sms": {
                "description": "Whether this person has consented to receiving general SMS messages.",
                "type": "boolean",
                "example": true
              },
              "phone": {
                "description": "Whether this person has consented to receiving phone calls.",
                "type": "boolean",
                "example": false
              },
              "post": {
                "description": "Whether this person has consented to receiving post.",
                "example": true,
                "type": "boolean"
              },
              "rota_email": {
                "description": "Whether this person has consented to receiving rota emails.",
                "type": "boolean",
                "example": false
              },
              "rota_sms": {
                "description": "Whether this person has consented to receiving rota SMS messages.",
                "type": "boolean",
                "example": true
              }
            },
            "required": [
              "general_email",
              "general_sms",
              "phone",
              "post",
              "rota_email",
              "rota_sms"
            ]
          },
          "ongoing_consent": {
            "description": "Ongoing consent information for a Contact or Child.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "requested_at": {
                "description": "The date and time of the ongoing consent was created.",
                "type": "string",
                "format": "date-time",
                "example": "2023-09-19T14:52:40Z",
                "nullable": true
              },
              "granted_at": {
                "description": "The date and time the ongoing consent was granted.",
                "type": "string",
                "format": "date-time",
                "example": "2023-09-19T14:52:40Z",
                "nullable": true
              },
              "granted_by": {
                "description": "Name of the person who granted the ongoing consent.",
                "type": "string",
                "example": "Jessica Horn",
                "nullable": true
              }
            },
            "required": [
              "requested_at",
              "granted_at",
              "granted_by"
            ]
          },
          "login": {
            "description": "My ChurchSuite/CharitySuite login information.",
            "type": "object",
            "$comment": "This can currently be used for both reading and writing",
            "additionalProperties": false,
            "properties": {
              "enabled": {
                "description": "Whether the person is able to log into My.",
                "type": "boolean",
                "example": false
              },
              "invited": {
                "description": "Whether the person has been invited to create a My account.",
                "type": "boolean",
                "example": true,
                "$comment": "Readonly because this is never changed directly by the user",
                "readOnly": true
              }
            },
            "required": [
              "enabled",
              "invited"
            ]
          },
          "privacy": {
            "description": "The Contact's privacy settings.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name_visible": {
                "description": "Whether the Contact's name is visible in My.",
                "type": "boolean",
                "example": true
              },
              "address_visible": {
                "description": "Whether the Contact's address is visible in My.",
                "type": "boolean",
                "example": true
              },
              "mobile_visible": {
                "description": "Whether the Contact's mobile is visible in My.",
                "type": "boolean",
                "example": false
              },
              "email_visible": {
                "description": "Whether the Contact's email is visible in My.",
                "type": "boolean",
                "example": false
              },
              "telephone_visible": {
                "description": "Whether the Contact's mobile is visible in My.",
                "type": "boolean",
                "example": false
              }
            },
            "required": [
              "name_visible",
              "address_visible",
              "mobile_visible",
              "email_visible",
              "telephone_visible"
            ]
          },
          "image": {
            "description": "A collection of different sized variations of an Image.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "thumbnail": {
                "description": "The thumbnail Image url. Thumbnail images are 128x128px.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_thumb.jpg"
              },
              "small": {
                "description": "The small resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_sm.jpg"
              },
              "medium": {
                "description": "The medium resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_md.jpg"
              },
              "large": {
                "description": "The large resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_lg.jpg"
              },
              "uploaded_at": {
                "description": "Date and time the Image was uploaded at.",
                "type": "string",
                "format": "date-time",
                "example": "2014-04-25T10:10:32Z",
                "nullable": true
              }
            },
            "required": [
              "thumbnail",
              "small",
              "medium",
              "large",
              "uploaded_at"
            ]
          },
          "all_sites": {
            "description": "Whether the Contact belongs to all sites or not.",
            "type": "boolean",
            "example": false
          },
          "site_ids": {
            "description": "List of all site IDs the Contact belongs to.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              1,
              5,
              10
            ]
          },
          "status": {
            "description": "Current status of the Contact.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived",
              "pending"
            ]
          },
          "archived_at": {
            "description": "Date and time the Contact's record was archived.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Contact's record was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Contact's record.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Contact's record was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Contact's record.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "first_name",
          "middle_name",
          "last_name",
          "title",
          "formal_name",
          "former_name",
          "sex",
          "date_of_birth",
          "marital_status",
          "spouse_id",
          "address",
          "telephone",
          "mobile",
          "work_telephone",
          "email",
          "job",
          "employer",
          "custom_fields",
          "communication",
          "ongoing_consent",
          "login",
          "privacy",
          "image",
          "all_sites",
          "site_ids",
          "status",
          "archived_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "ContactAdd": {
        "description": "Add a Contact in the Address Book module.",
        "type": "object",
        "properties": {
          "first_name": {
            "description": "The first name of the Contact.",
            "type": "string",
            "example": "Beth",
            "maxLength": 50
          },
          "last_name": {
            "description": "The last name of the Contact.",
            "type": "string",
            "example": "Gibson",
            "maxLength": 50
          },
          "middle_name": {
            "description": "The middle name of the Contact.",
            "type": "string",
            "example": "Deborah",
            "maxLength": 50
          },
          "title": {
            "description": "The title of the Contact.",
            "type": "string",
            "example": "Miss",
            "maxLength": 25
          },
          "formal_name": {
            "description": "The formal name of the Contact.",
            "type": "string",
            "example": "Bethany",
            "maxLength": 50
          },
          "former_name": {
            "description": "Use this if a Contact has changed their last name and you want to record their previous last name. I.e. someone's maiden name.",
            "type": "string",
            "example": "Smith",
            "maxLength": 50
          },
          "email": {
            "description": "The Contact's email address.",
            "type": "string",
            "format": "email",
            "example": "beth.gibson@kingshopechurch.com"
          },
          "mobile": {
            "description": "The Contact's mobile number.",
            "type": "string",
            "format": "phone",
            "example": "07700700153"
          },
          "telephone": {
            "description": "The Contact's telephone number.",
            "type": "string",
            "format": "phone",
            "example": "01234567890"
          },
          "address": {
            "description": "A street Address.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "line_1": {
                "description": "The first line of the Address",
                "type": "string",
                "example": "Floor 2",
                "maxLength": 100
              },
              "line_2": {
                "description": "The second line of the Address",
                "type": "string",
                "example": "1 Broadway",
                "maxLength": 100
              },
              "line_3": {
                "description": "The third line of the Address",
                "type": "string",
                "example": "Lace Market",
                "maxLength": 100
              },
              "city": {
                "description": "The city of the Address",
                "type": "string",
                "example": "Nottingham",
                "maxLength": 50
              },
              "county": {
                "description": "The county of the Address",
                "type": "string",
                "example": "Nottinghamshire",
                "maxLength": 50
              },
              "country": {
                "description": "The country of the Address, in ISO3166 alpha 2 format",
                "type": "string",
                "example": "GB",
                "maxLength": 2,
                "minLength": 2
              },
              "postcode": {
                "description": "The postcode of the Address",
                "type": "string",
                "example": "NG1 1PR",
                "maxLength": 10,
                "pattern": "^([a-zA-Z0-9\\-\\s]{3,10})?$"
              }
            }
          },
          "sex": {
            "description": "The sex of the Contact.",
            "type": "string",
            "example": "female",
            "enum": [
              "female",
              "male"
            ]
          },
          "date_of_birth": {
            "description": "The Contact's date of birth.",
            "type": "string",
            "format": "date",
            "example": "1957-04-27"
          },
          "marital_status": {
            "description": "The Contact's marital status.",
            "type": "string",
            "example": "single",
            "enum": [
              "single",
              "married",
              "engaged",
              "partnered",
              "separated",
              "divorced",
              "widowed"
            ]
          },
          "spouse_id": {
            "description": "The Contact ID for the Contact's spouse.",
            "type": "integer",
            "example": 656,
            "minimum": 1
          },
          "job": {
            "description": "The job of the Contact.",
            "type": "string",
            "example": "Plumber",
            "maxLength": 100
          },
          "employer": {
            "description": "The employer of the Contact.",
            "type": "string",
            "example": "Spring Plumbing",
            "maxLength": 100
          },
          "work_telephone": {
            "description": "The Contact's work telephone number.",
            "type": "string",
            "format": "phone",
            "example": "01234567890"
          },
          "custom_fields": {
            "description": "Custom Field responses for this resource",
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "object",
                  "title": "Text Field",
                  "description": "A Custom Field for this resource",
                  "properties": {
                    "id": {
                      "description": "The ID of the Custom Field",
                      "type": "integer",
                      "example": 1,
                      "minimum": 1
                    },
                    "field_type": {
                      "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                      "type": "string",
                      "example": "text",
                      "enum": [
                        "text",
                        "textarea",
                        "phone",
                        "date"
                      ]
                    },
                    "value": {
                      "description": "The raw value of a text, textarea, phone or date.",
                      "type": "string",
                      "example": "I like the songs."
                    }
                  },
                  "required": [
                    "id",
                    "field_type",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "title": "Email Field",
                  "description": "A Custom Field for this resource",
                  "properties": {
                    "id": {
                      "description": "The ID of the Custom Field",
                      "type": "integer",
                      "example": 1,
                      "minimum": 1
                    },
                    "field_type": {
                      "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                      "type": "string",
                      "example": "email",
                      "enum": [
                        "email"
                      ]
                    },
                    "value": {
                      "description": "The raw value of an email.",
                      "type": "string",
                      "format": "email",
                      "example": "support@churchsuite.com",
                      "maxLength": 100
                    }
                  },
                  "required": [
                    "id",
                    "field_type",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "title": "UUID Field",
                  "description": "A Custom Field for this resource",
                  "properties": {
                    "id": {
                      "description": "The ID of the Custom Field",
                      "type": "integer",
                      "example": 1,
                      "minimum": 1
                    },
                    "field_type": {
                      "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                      "type": "string",
                      "example": "radio",
                      "enum": [
                        "radio",
                        "select"
                      ]
                    },
                    "value": {
                      "description": "The UUID of the selected response for a radio or select field.",
                      "type": "object",
                      "example": {
                        "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                      },
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "The UUID",
                          "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                          "minLength": 36,
                          "maxLength": 36
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "field_type",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "title": "UUID List Field",
                  "description": "A Custom Field for this resource",
                  "properties": {
                    "id": {
                      "description": "The ID of the Custom Field",
                      "type": "integer",
                      "example": 1,
                      "minimum": 1
                    },
                    "field_type": {
                      "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                      "type": "string",
                      "example": "checkbox",
                      "enum": [
                        "checkbox"
                      ]
                    },
                    "value": {
                      "description": "A list of UUIDs of the selected responses for a checkbox field.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "description": "The UUID of the selected response for a checkbox field.",
                        "example": {
                          "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                        },
                        "properties": {
                          "id": {
                            "description": "The UUID",
                            "type": "string",
                            "format": "uuid",
                            "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                            "maxLength": 36,
                            "minLength": 36
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "id",
                    "field_type",
                    "value"
                  ],
                  "additionalProperties": false
                }
              ],
              "discriminator": {
                "propertyName": "field_type"
              }
            }
          },
          "communication": {
            "description": "The person's communication preferences. If no data is provided, the module default communication preferences will be used.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "general_email": {
                "description": "Whether this person has consented to receiving general emails.",
                "type": "boolean",
                "example": false
              },
              "general_sms": {
                "description": "Whether this person has consented to receiving general SMS messages.",
                "type": "boolean",
                "example": true
              },
              "phone": {
                "description": "Whether this person has consented to receiving phone calls.",
                "type": "boolean",
                "example": false
              },
              "post": {
                "description": "Whether this person has consented to receiving post.",
                "example": true,
                "type": "boolean"
              },
              "rota_email": {
                "description": "Whether this person has consented to receiving rota emails.",
                "type": "boolean",
                "example": false
              },
              "rota_sms": {
                "description": "Whether this person has consented to receiving rota SMS messages.",
                "type": "boolean",
                "example": true
              }
            },
            "required": [
              "general_email",
              "general_sms",
              "phone",
              "post",
              "rota_email",
              "rota_sms"
            ]
          },
          "login": {
            "$ref": "#/components/schemas/Contact/properties/login"
          },
          "privacy": {
            "description": "Add the Contact's privacy settings. If no data is provided, the default privacy settings will be used.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name_visible": {
                "description": "Whether the Contact's name is visible in My.",
                "type": "boolean",
                "example": true
              },
              "address_visible": {
                "description": "Whether the Contact's address is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": true
              },
              "mobile_visible": {
                "description": "Whether the Contact's mobile is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": false
              },
              "email_visible": {
                "description": "Whether the Contact's email is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": false
              },
              "telephone_visible": {
                "description": "Whether the Contact's mobile is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": false
              }
            },
            "required": [
              "name_visible",
              "address_visible",
              "mobile_visible",
              "email_visible",
              "telephone_visible"
            ]
          },
          "all_sites": {
            "description": "Whether the Contact belongs to All Sites.",
            "type": "boolean",
            "example": true
          },
          "site_ids": {
            "description": "An array of Site IDs that the Contact belongs to. If `all_sites` is `true`, this will be overridden. You are only able to add site IDs for sites you have the relevant permission for.",
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "example": 2
            },
            "minItems": 1
          }
        },
        "required": [
          "first_name",
          "last_name",
          "all_sites",
          "site_ids"
        ]
      },
      "ContactEdit": {
        "description": "Edit a Contact in the Address Book module.",
        "type": "object",
        "properties": {
          "first_name": {
            "description": "The first name of the Contact.",
            "type": "string",
            "example": "Beth",
            "maxLength": 50
          },
          "last_name": {
            "description": "The last name of the Contact.",
            "type": "string",
            "example": "Gibson",
            "maxLength": 50
          },
          "middle_name": {
            "description": "The middle name of the Contact.",
            "type": "string",
            "example": "Deborah",
            "maxLength": 50
          },
          "title": {
            "description": "The title of the Contact.",
            "type": "string",
            "example": "Miss",
            "maxLength": 25
          },
          "formal_name": {
            "description": "The formal name of the Contact.",
            "type": "string",
            "example": "Bethany",
            "maxLength": 50
          },
          "former_name": {
            "description": "Use this if a Contact has changed their last name and you want to record their previous last name. I.e. someone's maiden name.",
            "type": "string",
            "example": "Smith",
            "maxLength": 50
          },
          "email": {
            "description": "The Contact's email address.",
            "type": "string",
            "format": "email",
            "example": "beth.gibson@kingshopechurch.com"
          },
          "mobile": {
            "description": "The Contact's mobile number.",
            "type": "string",
            "format": "phone",
            "example": "07700700153"
          },
          "telephone": {
            "description": "The Contact's telephone number.",
            "type": "string",
            "format": "phone",
            "example": "01234567890"
          },
          "address": {
            "description": "Edit a street Address.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "line_1": {
                "description": "The first line of the Address",
                "type": "string",
                "example": "Floor 2",
                "maxLength": 100
              },
              "line_2": {
                "description": "The second line of the Address",
                "type": "string",
                "example": "1 Broadway",
                "maxLength": 100
              },
              "line_3": {
                "description": "The third line of the Address",
                "type": "string",
                "example": "Lace Market",
                "maxLength": 100
              },
              "city": {
                "description": "The city of the Address",
                "type": "string",
                "example": "Nottingham",
                "maxLength": 50
              },
              "county": {
                "description": "The county of the Address",
                "type": "string",
                "example": "Nottinghamshire",
                "maxLength": 50
              },
              "country": {
                "description": "The country of the Address, in ISO3166 alpha 2 format",
                "type": "string",
                "example": "GB",
                "maxLength": 2,
                "minLength": 2,
                "nullable": true
              },
              "postcode": {
                "description": "The postcode of the Address",
                "type": "string",
                "example": "NG1 1PR",
                "maxLength": 10,
                "pattern": "^([a-zA-Z0-9\\-\\s]{3,10})?$"
              }
            },
            "required": [
              "line_1",
              "line_2",
              "line_3",
              "city",
              "county",
              "country",
              "postcode"
            ]
          },
          "sex": {
            "description": "The sex of the Contact.",
            "type": "string",
            "example": "female",
            "enum": [
              "female",
              "male"
            ],
            "nullable": true
          },
          "date_of_birth": {
            "description": "The Contact's date of birth.",
            "type": "string",
            "format": "date",
            "example": "1957-04-27",
            "nullable": true
          },
          "marital_status": {
            "description": "The Contact's marital status.",
            "type": "string",
            "example": "single",
            "enum": [
              "single",
              "married",
              "engaged",
              "partnered",
              "separated",
              "divorced",
              "widowed"
            ],
            "nullable": true
          },
          "spouse_id": {
            "description": "The Contact ID for the Contact's spouse.",
            "type": "integer",
            "example": 656,
            "minimum": 1,
            "nullable": true
          },
          "job": {
            "description": "The job of the Contact.",
            "type": "string",
            "example": "Plumber",
            "maxLength": 100
          },
          "employer": {
            "description": "The employer of the Contact.",
            "type": "string",
            "example": "Spring Plumbing",
            "maxLength": 100
          },
          "work_telephone": {
            "description": "The Contact's work telephone number.",
            "type": "string",
            "format": "phone",
            "example": "01234567890"
          },
          "custom_fields": {
            "$ref": "#/components/schemas/ContactAdd/properties/custom_fields"
          },
          "communication": {
            "description": "The person's communication preferences.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "general_email": {
                "description": "Whether this person has consented to receiving general emails.",
                "type": "boolean",
                "example": false
              },
              "general_sms": {
                "description": "Whether this person has consented to receiving general SMS messages.",
                "type": "boolean",
                "example": true
              },
              "phone": {
                "description": "Whether this person has consented to receiving phone calls.",
                "type": "boolean",
                "example": false
              },
              "post": {
                "description": "Whether this person has consented to receiving post.",
                "example": true,
                "type": "boolean"
              },
              "rota_email": {
                "description": "Whether this person has consented to receiving rota emails.",
                "type": "boolean",
                "example": false
              },
              "rota_sms": {
                "description": "Whether this person has consented to receiving rota SMS messages.",
                "type": "boolean",
                "example": true
              }
            },
            "required": [
              "general_email",
              "general_sms",
              "phone",
              "post",
              "rota_email",
              "rota_sms"
            ]
          },
          "login": {
            "$ref": "#/components/schemas/Contact/properties/login"
          },
          "privacy": {
            "description": "Edit the Contact's privacy settings",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name_visible": {
                "description": "Whether the Contact's name is visible in My.",
                "type": "boolean",
                "example": true
              },
              "address_visible": {
                "description": "Whether the Contact's address is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": true
              },
              "mobile_visible": {
                "description": "Whether the Contact's mobile is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": false
              },
              "email_visible": {
                "description": "Whether the Contact's email is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": false
              },
              "telephone_visible": {
                "description": "Whether the Contact's mobile is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": false
              }
            },
            "required": [
              "name_visible",
              "address_visible",
              "mobile_visible",
              "email_visible",
              "telephone_visible"
            ]
          },
          "all_sites": {
            "description": "Whether the Contact belongs to All Sites.",
            "type": "boolean",
            "example": true
          },
          "site_ids": {
            "description": "An array of Site IDs that the Contact belongs to. If `all_sites` is `true`, this will be overridden. You are only able to add site IDs for sites you have the relevant permission for.",
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "example": 2
            },
            "minItems": 1
          }
        },
        "required": [
          "address",
          "all_sites",
          "communication",
          "custom_fields",
          "date_of_birth",
          "email",
          "employer",
          "first_name",
          "formal_name",
          "former_name",
          "job",
          "last_name",
          "login",
          "marital_status",
          "middle_name",
          "mobile",
          "privacy",
          "sex",
          "site_ids",
          "spouse_id",
          "telephone",
          "title",
          "work_telephone"
        ]
      },
      "CustomField": {
        "description": "A Custom Field, as found in several modules",
        "type": "object",
        "properties": {
          "id": {
            "description": "The ID of the Custom Field.",
            "type": "integer",
            "example": 1
          },
          "order": {
            "description": "Order the Custom Field appears.",
            "type": "integer",
            "example": 1
          },
          "type": {
            "description": "The Custom Field type.",
            "type": "string",
            "example": "text",
            "enum": [
              "text",
              "textarea",
              "checkbox",
              "radio",
              "select",
              "date",
              "email",
              "phone"
            ]
          },
          "name": {
            "description": "Name of the Custom Field.",
            "type": "string",
            "example": "Receive weekly newsletter"
          },
          "help": {
            "description": "Some text to help explain the purpose of the field.",
            "type": "string",
            "example": "Tick if you would like to receive the weekly newsletter or not.",
            "nullable": true
          },
          "options": {
            "description": "Field types checkbox, radio or select - will contain options for the field",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "description": "UUID of the option.",
                  "type": "string",
                  "format": "uuid",
                  "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                },
                "name": {
                  "description": "Name of the option.",
                  "type": "string",
                  "example": "Yes I would love to receive the newsletter!"
                },
                "status": {
                  "description": "Status of the option.",
                  "type": "string",
                  "example": "active",
                  "enum": [
                    "active",
                    "archived"
                  ]
                }
              },
              "required": [
                "id",
                "name",
                "status"
              ],
              "additionalProperties": false
            },
            "nullable": true
          },
          "required": {
            "description": "Whether the field is required or not.",
            "type": "boolean",
            "example": true
          },
          "settings": {
            "description": "Settings relating to My, Embed and Connect.",
            "type": "object",
            "nullable": true,
            "properties": {
              "my": {
                "description": "My ChurchSuite and My Consent settings.",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "editable": {
                    "description": "Whether the field is editable in My.",
                    "type": "boolean",
                    "example": false
                  },
                  "viewable": {
                    "description": "Whether the field is viewable in My.",
                    "type": "boolean",
                    "example": true
                  },
                  "required": {
                    "description": "Whether the field is a required in My.",
                    "type": "boolean",
                    "example": false
                  }
                },
                "required": [
                  "editable",
                  "viewable",
                  "required"
                ]
              },
              "embed": {
                "description": "Embed settings.",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "editable": {
                    "description": "Whether the field is editable in Embed.",
                    "type": "boolean",
                    "example": false
                  },
                  "viewable": {
                    "description": "Whether the field is viewable in Embed.",
                    "type": "boolean",
                    "example": true
                  },
                  "required": {
                    "description": "Whether the field is required in Embed.",
                    "type": "boolean",
                    "example": false
                  }
                },
                "required": [
                  "editable",
                  "viewable",
                  "required"
                ]
              },
              "connect": {
                "description": "Connect settings.",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "editable": {
                    "description": "Whether the field is editable in Connect.",
                    "type": "boolean",
                    "example": false
                  },
                  "viewable": {
                    "description": "Whether the field is viewable in Connect.",
                    "type": "boolean",
                    "example": true
                  },
                  "required": {
                    "description": "Whether the field is required in Connect.",
                    "type": "boolean",
                    "example": false
                  }
                },
                "required": [
                  "editable",
                  "viewable",
                  "required"
                ]
              }
            }
          },
          "created_at": {
            "description": "Date and time the Custom Field was created.",
            "type": "string",
            "format": "date-time",
            "example": "2022-11-17T16:48:13Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Custom Field.",
            "type": "string",
            "example": "import",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Custom Field was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2022-11-17T16:48:13Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Custom Field.",
            "type": "string",
            "example": "import",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "order",
          "type",
          "name",
          "help",
          "options",
          "required",
          "settings",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Flow": {
        "description": "Flow data, as found in several modules.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Flow's ID.",
            "type": "integer",
            "example": 1,
            "minimum": 1
          },
          "name": {
            "description": "The Flow's name.",
            "type": "string",
            "example": "Welcome new member"
          },
          "notification_days": {
            "description": "The days of the week where the Flow's managers receive emails when actions in this Flow are due/overdue, or null if no notification days are set.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday",
                "Saturday",
                "Sunday"
              ]
            },
            "example": [
              "Monday",
              "Friday",
              "Sunday"
            ],
            "nullable": true
          },
          "visible_in": {
            "description": "Modules the resource is visible in.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "addressbook",
                "bookings",
                "children",
                "giving"
              ]
            },
            "example": [
              "addressbook",
              "bookings"
            ]
          },
          "visible_to": {
            "$ref": "#/components/schemas/Tag/properties/visible_to"
          },
          "status": {
            "description": "The current status of the Flow.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "archived_at": {
            "description": "Date and time the Flow was archived.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Flow was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user that created the Flow.",
            "type": "string",
            "example": "jennie",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Flow was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user that last modified the Flow.",
            "type": "string",
            "example": "caroline",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "notification_days",
          "visible_in",
          "visible_to",
          "status",
          "archived_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "FormField": {
        "description": "A Form Field, as found in the AddressBook or Children modules",
        "type": "object",
        "properties": {
          "id": {
            "description": "The ID of the Form Field.",
            "type": "integer",
            "example": 1
          },
          "order": {
            "description": "Order the Form Field appears.",
            "type": "integer",
            "example": 1
          },
          "type": {
            "description": "The Form Field type.",
            "type": "string",
            "example": "text",
            "enum": [
              "address",
              "checkbox",
              "dataProtection",
              "date",
              "deleted",
              "details",
              "divider",
              "email",
              "heading",
              "name",
              "phone",
              "prose",
              "radio",
              "select",
              "signature",
              "text",
              "textarea"
            ]
          },
          "name": {
            "description": "Name of the Form Field.",
            "type": "string",
            "example": "Walk home permission"
          },
          "help": {
            "description": "Some text to help explain the purpose of the field.",
            "type": "string",
            "example": "Select if your child is allowed to walk home alone or not.",
            "nullable": true
          },
          "options": {
            "description": "Field types checkbox, radio or select - will contain options for the field",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "value": {
                  "description": "Either the UUID of the option or the options raw value where there is a non-uuid value for the option, for example the person sex field.",
                  "type": "string",
                  "example": "f"
                },
                "label": {
                  "description": "Name of the option.",
                  "type": "string",
                  "example": "Yes I am happy for my child to walk home without a responsible adult."
                }
              },
              "required": [
                "value",
                "label"
              ],
              "additionalProperties": false
            },
            "nullable": true
          },
          "required": {
            "description": "Whether the field is required or not.",
            "type": "boolean",
            "example": true
          },
          "settings": {
            "description": "Any additional settings relating to the Form Field.",
            "type": "object",
            "nullable": true,
            "properties": {
              "confirmation": {
                "description": "Whether confirmation will be sent to the provided email address on the forms submission or not.",
                "type": "boolean",
                "example": false,
                "nullable": true
              },
              "required_fields": {
                "description": "List of any required fields.",
                "type": "array",
                "items": {
                  "type": "string"
                },
                "example": [
                  "name",
                  "email"
                ],
                "nullable": true
              },
              "text": {
                "description": "Text linked to a form element.",
                "type": "string",
                "example": "I agree to my son/daughter participating in youth club and the activities run by the team.",
                "nullable": true
              }
            },
            "required": [
              "confirmation",
              "required_fields",
              "text"
            ]
          },
          "created_at": {
            "description": "Date and time the Form Field was created.",
            "type": "string",
            "format": "date-time",
            "example": "2022-11-17T16:48:13Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Form Field.",
            "type": "string",
            "example": "import",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Form Field was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2022-11-17T16:48:13Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Form Field.",
            "type": "string",
            "example": "import",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "order",
          "type",
          "name",
          "help",
          "options",
          "required",
          "settings",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "FormResponse": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The ID of the Response.",
            "type": "integer",
            "example": 98
          },
          "form_id": {
            "description": "The ID of the Form the Response is linked to.",
            "type": "integer",
            "example": 12
          },
          "contact_ids": {
            "description": "The IDs of Contacts the Response is linked to.",
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1
            },
            "example": [
              652
            ]
          },
          "child_ids": {
            "description": "The IDs of Children the Response is linked to.",
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1
            },
            "example": [
              652
            ]
          },
          "invite_response": {
            "description": "Whether the Response linked to a form invite or not.",
            "type": "boolean",
            "example": true
          },
          "response_data": {
            "description": "Form Field responses for this resource",
            "type": "array",
            "items": {
              "type": "object",
              "description": "Form Field response for this resource",
              "properties": {
                "id": {
                  "description": "The ID of the Form Field",
                  "type": "integer",
                  "example": 1
                },
                "value": {
                  "nullable": true,
                  "oneOf": [
                    {
                      "type": "string",
                      "description": "The raw value of a text, textarea, email, phone, date, select, radio or signature url.",
                      "pattern": "^(?!\\d{4}-\\d{2}-\\d{2}$).+$",
                      "example": "support@churchsuite.com"
                    },
                    {
                      "type": "integer",
                      "description": "The id of a site.",
                      "example": 1
                    },
                    {
                      "type": "object",
                      "description": "The first and last name response values of a name field.",
                      "properties": {
                        "first_name": {
                          "description": "The first name field value.",
                          "type": "string",
                          "example": "Michelle"
                        },
                        "last_name": {
                          "description": "The last name field value.",
                          "type": "string",
                          "example": "Hawks"
                        }
                      },
                      "required": [
                        "first_name",
                        "last_name"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "description": "The details fields response values.",
                      "properties": {
                        "first_name": {
                          "description": "The first name field value.",
                          "type": "string",
                          "example": "Michelle"
                        },
                        "last_name": {
                          "description": "The last name field value.",
                          "type": "string",
                          "example": "Hawks"
                        },
                        "email": {
                          "description": "The email field value.",
                          "type": "string",
                          "example": "mhawks@churchsuite.com"
                        },
                        "mobile": {
                          "description": "The email field value.",
                          "type": "string",
                          "example": "07700 900000"
                        },
                        "telephone": {
                          "description": "The email field value.",
                          "type": "string",
                          "example": "02079460197"
                        }
                      },
                      "required": [
                        "last_name",
                        "first_name",
                        "email",
                        "mobile",
                        "telephone"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "description": "The values of an address field.",
                      "properties": {
                        "line_1": {
                          "description": "The first line of the address.",
                          "type": "string",
                          "example": "ChurchSuite",
                          "nullable": true
                        },
                        "line_2": {
                          "description": "The second line of the address.",
                          "type": "string",
                          "example": "2nd Floor The Courtyard",
                          "nullable": true
                        },
                        "line_3": {
                          "description": "The third line of the address.",
                          "type": "string",
                          "example": "35-37 St Mary's Gate",
                          "nullable": true
                        },
                        "city": {
                          "description": "The city of the address.",
                          "type": "string",
                          "example": "Nottingham",
                          "nullable": true
                        },
                        "county": {
                          "description": "The county of the address.",
                          "type": "string",
                          "example": "Nottinghamshire",
                          "nullable": true
                        },
                        "country": {
                          "description": "The country of the address, in ISO3166 alpha 2 format.",
                          "type": "string",
                          "example": "GB",
                          "nullable": true
                        },
                        "postcode": {
                          "description": "The post code of the address.",
                          "type": "string",
                          "example": "NG1 1PU",
                          "nullable": true
                        }
                      },
                      "required": [
                        "line_1",
                        "line_2",
                        "line_3",
                        "city",
                        "county",
                        "country",
                        "postcode"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "array",
                      "description": "An array of objects which contains the UUIDs of the selected responses for a checkbox field. If no checkboxes are selected an empty array will be returned.",
                      "items": {
                        "type": "object",
                        "description": "The UUID of the selected response for a radio or select field.",
                        "example": {
                          "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                        },
                        "properties": {
                          "id": {
                            "description": "The UUID",
                            "type": "string",
                            "format": "uuid",
                            "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                            "maxLength": 36,
                            "minLength": 36
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false
                      }
                    },
                    {
                      "type": "array",
                      "description": "An array of selected responses for a communications field.",
                      "example": [
                        "post",
                        "rota_sms",
                        "general_sms"
                      ],
                      "items": {
                        "type": "string",
                        "enum": [
                          "general_email",
                          "general_sms",
                          "rota_email",
                          "rota_sms",
                          "phone",
                          "post"
                        ]
                      }
                    },
                    {
                      "type": "array",
                      "description": "An array of selected responses for a privacy field.",
                      "example": [
                        "address",
                        "mobile"
                      ],
                      "items": {
                        "type": "string",
                        "enum": [
                          "address",
                          "telephone",
                          "mobile",
                          "email"
                        ]
                      }
                    },
                    {
                      "type": "string",
                      "format": "date",
                      "description": "The value for a date field.",
                      "example": "2022-11-17",
                      "nullable": true
                    },
                    {
                      "type": "array",
                      "description": "An array of selected responses for a photo/video consent field.",
                      "example": [
                        "internal",
                        "external"
                      ],
                      "items": {
                        "type": "string",
                        "enum": [
                          "internal",
                          "external"
                        ]
                      }
                    }
                  ]
                }
              },
              "required": [
                "id",
                "value"
              ],
              "additionalProperties": false
            }
          },
          "status": {
            "description": "The status of the Response.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived",
              "spam"
            ]
          },
          "created_at": {
            "description": "Date and time the Response was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Response.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Response details was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Response details.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "form_id",
          "contact_ids",
          "child_ids",
          "invite_response",
          "response_data",
          "status",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "KeyDate": {
        "description": "Key Date data, as found in several modules.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Key Date's ID.",
            "type": "integer",
            "example": 15,
            "minimum": 1
          },
          "name": {
            "description": "The Key Date's name.",
            "type": "string",
            "example": "Joined Kings Hope Church"
          },
          "colour": {
            "description": "The Key Date's colour.",
            "type": "string",
            "example": "blue",
            "enum": [
              "blue",
              "red",
              "orange",
              "green",
              "purple",
              "pink",
              "brown",
              "grey"
            ]
          },
          "visible_to": {
            "$ref": "#/components/schemas/Note/properties/visible_to"
          },
          "created_at": {
            "description": "Date and time the Key Date was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user that created the Key Date.",
            "type": "string",
            "example": "jennie",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Key Date was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user that last modified the Key Date.",
            "type": "string",
            "example": "caroline",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "colour",
          "visible_to",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "KeyDateAdd": {
        "description": "A Key Date.",
        "type": "object",
        "properties": {
          "name": {
            "description": "The Key Date's name.",
            "type": "string",
            "example": "Joined Kings Hope Church",
            "maxLength": 50
          },
          "colour": {
            "description": "The Key Date's colour.",
            "type": "string",
            "example": "blue",
            "enum": [
              "blue",
              "red",
              "orange",
              "green",
              "purple",
              "pink",
              "brown",
              "grey"
            ]
          },
          "visible_to": {
            "$ref": "#/components/schemas/NoteAdd/properties/visible_to"
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "colour"
        ]
      },
      "KeyDateEdit": {
        "description": "A Key Date data.",
        "type": "object",
        "properties": {
          "name": {
            "description": "The Key Date's name.",
            "type": "string",
            "example": "Joined Kings Hope Church",
            "maxLength": 50
          },
          "colour": {
            "description": "The Key Date's colour.",
            "type": "string",
            "example": "blue",
            "enum": [
              "blue",
              "red",
              "orange",
              "green",
              "purple",
              "pink",
              "brown",
              "grey"
            ]
          },
          "visible_to": {
            "$ref": "#/components/schemas/TagEdit/properties/visible_to"
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "colour",
          "visible_to"
        ]
      },
      "KeyDateResource": {
        "description": "A single Key Date resource - an instance of a Key Date for a specific resource and date.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The ID of the Key Date resource.",
            "type": "integer",
            "example": 258,
            "minimum": 1
          },
          "key_date_id": {
            "description": "The ID of the Key Date the Key Date resource belongs to.",
            "type": "integer",
            "examples": [
              357,
              323,
              310
            ],
            "minimum": 1
          },
          "resource": {
            "description": "The resource that the Key Date resource belongs to.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "description": "The type of the resource,indicating whether they are a Child, Contact or Organisation.",
                "type": "string",
                "example": "addressbook_contact",
                "enum": [
                  "addressbook_contact",
                  "children_child",
                  "network_organisation"
                ]
              },
              "id": {
                "description": "The ID of the resource.",
                "type": "integer",
                "example": 1,
                "minimum": 1
              }
            },
            "required": [
              "type",
              "id"
            ]
          },
          "resource_id": {
            "description": "This is no longer recommended - please use `resource` to ge the resource details. The ID of the Contact, Child, or Organisation the Key Date resource belongs to, depending on which module you are accessing.",
            "type": "integer",
            "example": 1,
            "deprecated": true,
            "minimum": 1
          },
          "date": {
            "description": "The date of the Key Date resource.",
            "type": "string",
            "format": "date",
            "example": "2023-02-15"
          },
          "description": {
            "description": "The description of this Key Date resource.",
            "type": "string",
            "example": "Unsubscribed 15-Feb-2024"
          },
          "created_at": {
            "description": "Date and time the Key Date resource was created.",
            "type": "string",
            "format": "date-time",
            "example": "2026-05-15T13:27:13Z"
          },
          "created_by": {
            "description": "The user who created the Key Date resource.",
            "type": "string",
            "example": "import"
          },
          "modified_at": {
            "description": "Date and time the Key Date resource was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2026-05-15T13:27:13Z"
          },
          "modified_by": {
            "description": "The user who last modified the Key Date resource.",
            "type": "string",
            "example": "import"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "key_date_id",
          "resource",
          "resource_id",
          "date",
          "description",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "KeyDateResourceAdd": {
        "description": "A single Key Date Resource - an instance of a Key Date for a specific resource and date.",
        "type": "object",
        "properties": {
          "key_date_id": {
            "description": "The Key Date's ID.",
            "type": "integer",
            "examples": [
              13,
              310,
              323
            ],
            "minimum": 1
          },
          "resource": {
            "description": "The resource to link to the Key Date.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "The ID of the resource.",
                "type": "integer",
                "examples": [
                  6,
                  83,
                  648
                ],
                "minimum": 1
              }
            },
            "required": [
              "id"
            ]
          },
          "date": {
            "description": "The date of the Key Date Resource.",
            "type": "string",
            "format": "date",
            "example": "2023-02-15"
          },
          "description": {
            "description": "The description of this Key Date Resource.",
            "type": "string",
            "example": "Unsubscribed 15-Feb-2024",
            "maxLength": 65535
          }
        },
        "additionalProperties": false,
        "required": [
          "key_date_id",
          "resource",
          "date"
        ]
      },
      "KeyDateResourceEdit": {
        "description": "Edit a single Key Date Resource - an instance of a Key Date for a specific resource and date.",
        "type": "object",
        "properties": {
          "date": {
            "description": "The date of the Key Date Resource.",
            "type": "string",
            "format": "date",
            "example": "2023-02-15"
          },
          "description": {
            "description": "The description of this Key Date Resource.",
            "type": "string",
            "example": "Unsubscribed 15-Feb-2024",
            "maxLength": 65535
          }
        },
        "additionalProperties": false,
        "required": [
          "date",
          "description"
        ]
      },
      "Note": {
        "description": "A single Note, as found in multiple modules.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The ID of the Note.",
            "type": "integer",
            "example": 1,
            "minimum": 1,
            "readOnly": true
          },
          "content": {
            "description": "The content of the Note.",
            "example": "Had a conversation about this on 12th of July.",
            "type": "string"
          },
          "pinned": {
            "description": "Whether the Note has been pinned.",
            "type": "boolean",
            "example": true
          },
          "visible_to": {
            "$ref": "#/components/schemas/Tag/properties/visible_to"
          },
          "created_at": {
            "description": "Date and time the Note was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true,
            "readOnly": true
          },
          "created_by": {
            "description": "The user that created the Note.",
            "type": "string",
            "example": "neil",
            "nullable": true,
            "readOnly": true
          },
          "modified_at": {
            "description": "Date and time the Note was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true,
            "readOnly": true
          },
          "modified_by": {
            "description": "The user that last modified the Note.",
            "type": "string",
            "example": "anthony",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "content",
          "pinned",
          "visible_to",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "NoteAdd": {
        "type": "object",
        "properties": {
          "content": {
            "description": "The content of the Note.",
            "example": "Had a conversation about this on 12th of July.",
            "maxLength": 65535,
            "minLength": 1,
            "type": "string"
          },
          "pinned": {
            "description": "Whether the Note should be pinned.",
            "type": "boolean",
            "example": true,
            "default": false
          },
          "visible_to": {
            "$ref": "#/components/schemas/TagAdd/properties/visible_to"
          }
        },
        "additionalProperties": false,
        "required": [
          "content"
        ]
      },
      "Tag": {
        "description": "Tag data as found in several modules.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Tag's ID.",
            "type": "integer",
            "example": 1,
            "minimum": 1
          },
          "name": {
            "description": "The Tag's name.",
            "type": "string",
            "example": "Serving"
          },
          "category_id": {
            "description": "The Tag's Category ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1,
            "nullable": true
          },
          "description": {
            "description": "The description of the Tag.",
            "type": "string",
            "example": "A individual who is serving for the church."
          },
          "colour": {
            "description": "The name of the colour of the Tag.",
            "type": "string",
            "example": "blue",
            "enum": [
              "blue",
              "brown",
              "green",
              "grey",
              "orange",
              "pink",
              "purple",
              "red"
            ]
          },
          "is_smart": {
            "description": "Whether the Tag is smart or fixed.",
            "type": "boolean",
            "example": true
          },
          "visible_to": {
            "description": "Who the resource is visible to, or null if there are no restrictions.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "just_me": {
                "description": "Whether the resource is visible to just the current user or not.",
                "type": "boolean",
                "example": false
              },
              "user_group_ids": {
                "description": "List of user group IDs the resource is visible to.",
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 1
                },
                "example": [
                  1,
                  5,
                  10
                ]
              }
            },
            "required": [
              "just_me",
              "user_group_ids"
            ]
          },
          "pinned_icon": {
            "description": "This Tag's pinned icon. Pinned tags give you a quick way to see your most important tags at a glance; they're displayed at the top of the page when viewing a person's profile.",
            "type": "string",
            "example": "tick",
            "enum": [
              "tick",
              "cross",
              "archive",
              "warning",
              "flag",
              "magic",
              "star",
              "profile",
              "user",
              "couple",
              "group",
              "pledge",
              "education",
              "job",
              "gift",
              "role",
              "duration",
              "smiley-happy",
              "smiley-neutral",
              "smiley-sad"
            ],
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Tag was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user that created the Tag.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Tag was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user that last modified the Tag.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "category_id",
          "description",
          "colour",
          "is_smart",
          "visible_to",
          "pinned_icon",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "TagAdd": {
        "description": "Create a Tag.",
        "type": "object",
        "properties": {
          "name": {
            "description": "The Tag's name.",
            "type": "string",
            "example": "Serving",
            "maxLength": 50,
            "minLength": 1,
            "pattern": "/[a-zA-Z]+/"
          },
          "category_id": {
            "description": "The Tag's Category ID. This sets the default colour of the Tag to the Category's colour.",
            "type": "integer",
            "examples": [
              1,
              7,
              12
            ],
            "minimum": 1
          },
          "description": {
            "description": "The description of the Tag.",
            "type": "string",
            "example": "The Kings Hope staff team (paid and unpaid).",
            "maxLength": 65535
          },
          "colour": {
            "description": "The name of the colour of the Tag. If not specified, the Category colour will be used where applicable, falling back to 'blue'.",
            "type": "string",
            "example": "blue",
            "default": "blue",
            "enum": [
              "blue",
              "red",
              "orange",
              "green",
              "purple",
              "pink",
              "brown",
              "grey"
            ]
          },
          "is_smart": {
            "description": "Whether the Tag is smart or fixed.",
            "type": "boolean",
            "example": true
          },
          "visible_to": {
            "oneOf": [
              {
                "type": "object",
                "description": "Who the resource is visible to. Do not include in the request if there are no restrictions. If included in the request, only one of `just_me` or `user_group_ids` can be set.",
                "properties": {
                  "just_me": {
                    "description": "The resource should only be visible to the current user",
                    "type": "boolean",
                    "example": true,
                    "enum": [
                      true
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "description": "Who the resource is visible to, or null if there are no restrictions.",
                "properties": {
                  "user_group_ids": {
                    "description": "List of user group IDs the resource is visible to. You are only able to add user group IDs for user groups you have access to.",
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "example": [
                      13,
                      31
                    ]
                  }
                },
                "additionalProperties": false
              }
            ]
          },
          "pinned_icon": {
            "description": "Pin this Tag by specifying an icon. Pinned tags give you a quick way to see your most important tags at a glance; they're displayed at the top of the page when viewing a person's profile.",
            "type": "string",
            "example": "tick",
            "enum": [
              "tick",
              "cross",
              "archive",
              "warning",
              "flag",
              "magic",
              "star",
              "profile",
              "user",
              "couple",
              "group",
              "pledge",
              "education",
              "job",
              "gift",
              "role",
              "duration",
              "smiley-happy",
              "smiley-neutral",
              "smiley-sad"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "is_smart"
        ]
      },
      "TagCategory": {
        "description": "Tag category data as found in several modules",
        "type": "object",
        "properties": {
          "id": {
            "description": "The tag category's ID.",
            "type": "integer",
            "example": 1,
            "minimum": 1
          },
          "name": {
            "description": "The tag category's name",
            "type": "string",
            "example": "Admin"
          },
          "color": {
            "description": "The name of the colour of the tag category",
            "type": "string",
            "example": "blue",
            "enum": [
              "blue",
              "red",
              "orange",
              "green",
              "purple",
              "pink",
              "brown",
              "grey"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "color"
        ]
      },
      "TagEdit": {
        "description": "Update a Tag.",
        "type": "object",
        "properties": {
          "name": {
            "description": "The Tag's name.",
            "type": "string",
            "example": "Serving",
            "maxLength": 50,
            "minLength": 1,
            "pattern": "/[a-zA-Z]+/"
          },
          "category_id": {
            "description": "The Tag's Category ID.",
            "type": "integer",
            "examples": [
              1,
              7,
              12
            ],
            "minimum": 1,
            "nullable": true
          },
          "description": {
            "description": "The description of the Tag.",
            "type": "string",
            "example": "The Kings Hope staff team (paid and unpaid).",
            "maxLength": 65535
          },
          "colour": {
            "description": "The name of the colour of the Tag.",
            "type": "string",
            "example": "blue",
            "enum": [
              "blue",
              "red",
              "orange",
              "green",
              "purple",
              "pink",
              "brown",
              "grey"
            ]
          },
          "visible_to": {
            "description": "Who the resource is visible to. Null if there are no restrictions. If `just_me` is true, `user_group_ids` must be empty or not set. If `just_me` is false, `user_group_ids` must contain at least one User Group ID.",
            "type": "object",
            "nullable": true,
            "oneOf": [
              {
                "type": "object",
                "title": "Visible to User Groups",
                "properties": {
                  "just_me": {
                    "description": "The resource should only be visible to the current user",
                    "type": "boolean",
                    "example": false,
                    "enum": [
                      false
                    ]
                  },
                  "user_group_ids": {
                    "description": "List of user group IDs the resource is visible to.",
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "example": [
                      13,
                      31
                    ]
                  }
                },
                "required": [
                  "user_group_ids"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "title": "Visible to just me",
                "properties": {
                  "just_me": {
                    "description": "The resource should only be visible to the current user",
                    "type": "boolean",
                    "example": true,
                    "enum": [
                      true
                    ]
                  },
                  "user_group_ids": {
                    "description": "List of user group IDs the resource is visible to.",
                    "type": "array",
                    "items": {
                      "type": "integer"
                    },
                    "example": [],
                    "maxItems": 0
                  }
                },
                "required": [
                  "just_me"
                ],
                "additionalProperties": false
              }
            ]
          },
          "pinned_icon": {
            "description": "Pin this Tag by specifying an icon. This will be displayed within the application.",
            "type": "string",
            "example": "tick",
            "enum": [
              "tick",
              "cross",
              "archive",
              "warning",
              "flag",
              "magic",
              "star",
              "profile",
              "user",
              "couple",
              "group",
              "pledge",
              "education",
              "job",
              "gift",
              "role",
              "duration",
              "smiley-happy",
              "smiley-neutral",
              "smiley-sad"
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "category_id",
          "description",
          "colour",
          "visible_to",
          "pinned_icon"
        ]
      },
      "TagResource": {
        "description": "A Tag Resource represents a Person who is part of a Tag.",
        "type": "object",
        "properties": {
          "person": {
            "description": "The Person to link to the Tag.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "description": "The Person's type, indicating whether they are a Child, Contact, Customer or Giver.",
                "type": "string",
                "example": "addressbook_contact",
                "enum": [
                  "addressbook_contact"
                ]
              },
              "id": {
                "description": "The Person's ID.",
                "type": "integer",
                "example": 12,
                "minimum": 1
              }
            },
            "required": [
              "type",
              "id"
            ]
          },
          "contact_id": {
            "description": "This is no longer recommended - please use `person` to get the Person's details. The Contact's ID.",
            "type": "integer",
            "example": 12,
            "deprecated": true,
            "minimum": 1
          },
          "tag_id": {
            "description": "The Tag's ID.",
            "type": "integer",
            "example": 5,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "person",
          "contact_id",
          "tag_id"
        ]
      },
      "TagResourceAdd": {
        "description": "Create a Tag Resource, linking a Person to a Tag.",
        "type": "object",
        "properties": {
          "person": {
            "description": "The Person to link to the Tag.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "description": "The Person's type, indicating whether they are a Child, Contact, Customer or Giver.",
                "type": "string",
                "example": "addressbook_contact",
                "enum": [
                  "addressbook_contact"
                ]
              },
              "id": {
                "description": "The Person's ID.",
                "type": "integer",
                "example": 12,
                "minimum": 1
              }
            },
            "required": [
              "type",
              "id"
            ]
          },
          "tag_id": {
            "description": "The Tag's ID.",
            "type": "integer",
            "example": 5,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "person",
          "tag_id"
        ]
      },
      "Gathering": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The Gathering's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The name of the Gathering.",
            "type": "string",
            "example": "Main Gathering"
          },
          "site_ids": {
            "description": "The Gathering's site ID returned in a single item array.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              1
            ],
            "maxItems": 1,
            "minItems": 1
          },
          "color": {
            "description": "The Gathering's hexadecimal colour value.",
            "type": "string",
            "example": "#ab12cd"
          },
          "people_tracking": {
            "description": "Whether the Gathering has people tracking enabled.",
            "type": "boolean",
            "example": false
          },
          "status": {
            "description": "The current status of the Gathering.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "created_at": {
            "description": "Date and time the Gathering was created.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z"
          },
          "created_by": {
            "description": "The user who created the Gathering.",
            "type": "string",
            "example": "anthony"
          },
          "modified_at": {
            "description": "Date and time the Gathering was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z"
          },
          "modified_by": {
            "description": "The user who last modified the Gathering.",
            "type": "string",
            "example": "anthony"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "site_ids",
          "color",
          "people_tracking",
          "status",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Metricset": {
        "description": "A Metricset is the structure which contains the Metrics which capture the statistics you wish to record for your Gathering.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Metricset's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The name of the Metricset.",
            "type": "string",
            "example": "Online"
          },
          "gathering_id": {
            "description": "The Metricset's gathering ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "order": {
            "description": "The positional order of the Metricset.",
            "type": "integer",
            "example": 1,
            "minimum": 1
          },
          "status": {
            "description": "The current status of the Metricset.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "created_at": {
            "description": "Date and time the Metricset was created.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z"
          },
          "created_by": {
            "description": "The user who created the Metricset.",
            "type": "string",
            "example": "anthony"
          },
          "modified_at": {
            "description": "Date and time the Metricset was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z"
          },
          "modified_by": {
            "description": "The user who last modified the Metricset.",
            "type": "string",
            "example": "anthony"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "gathering_id",
          "order",
          "status",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Metric": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The Metric's ID.",
            "type": "integer",
            "example": 3,
            "minimum": 1
          },
          "name": {
            "description": "The name of the Metric.",
            "type": "string",
            "example": "Offering"
          },
          "metricset_id": {
            "description": "The Metricset ID this Metric belongs to.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "type": {
            "description": "The Metric's type.",
            "type": "string",
            "example": "currency",
            "enum": [
              "currency",
              "number"
            ]
          },
          "include_in_total": {
            "description": "Whether the Gathering's Record will include this Metric in the calculated total for this Metric's type.",
            "type": "boolean",
            "example": true
          },
          "smart_link": {
            "description": "Whether the Metric is smart linked to auto update from people tracking.",
            "type": "boolean",
            "example": false
          },
          "order": {
            "description": "The Metric's positional order in the Metricset.",
            "type": "integer",
            "example": 1
          },
          "status": {
            "description": "The current status of the Metric.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "created_at": {
            "description": "Date and time the Metric was created.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z"
          },
          "created_by": {
            "description": "The user who created the Metric.",
            "type": "string",
            "example": "herbie"
          },
          "modified_at": {
            "description": "Date and time the Metric was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z"
          },
          "modified_by": {
            "description": "The user who last modified the Metric.",
            "type": "string",
            "example": "michelle"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "metricset_id",
          "type",
          "include_in_total",
          "smart_link",
          "order",
          "status",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Record": {
        "description": "A Record is the umbrella structure used to record attendance for a Gathering on a given date. Values for each of the Gathering's Metricset/Metrics are saved against the Record, and where People Tracking is enabled, each person's attendance can also be saved.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Record's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "date": {
            "description": "The Record's date.",
            "type": "string",
            "format": "date",
            "example": "2023-09-19"
          },
          "gathering_id": {
            "description": "The Record's gathering ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "total_number": {
            "description": "The aggregated total for this Record's number metrics, where the metric is configured to be included in the total.",
            "type": "integer",
            "example": 12
          },
          "total_currency": {
            "description": "The aggregated total for this Record's currency metrics, where the metric is configured to be included in the total, in the smallest monetary unit of your account's currency.",
            "type": "integer",
            "example": 10029
          },
          "total_people": {
            "description": "The total number of people Recorded as attending, available when People Tracking is enabled for the Gathering.",
            "type": "integer",
            "example": 12
          },
          "notes": {
            "description": "The Record's notes.",
            "type": "string",
            "example": "This is a note."
          },
          "created_at": {
            "description": "Date and time the Record was created.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z"
          },
          "created_by": {
            "description": "The user who created the Record.",
            "type": "string",
            "example": "anthony"
          },
          "modified_at": {
            "description": "Date and time the Record was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z"
          },
          "modified_by": {
            "description": "The user who last modified the Record.",
            "type": "string",
            "example": "anthony"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "date",
          "gathering_id",
          "total_number",
          "total_currency",
          "total_people",
          "notes",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "RecordContact": {
        "description": "A Record Contact is a Contact who has been linked to an Attendance Record.",
        "type": "object",
        "properties": {
          "record_id": {
            "description": "The Record Contact's Record ID.",
            "type": "integer",
            "example": 168,
            "minimum": 1
          },
          "contact_id": {
            "description": "The Record Contact's Contact ID.",
            "type": "integer",
            "example": 59,
            "minimum": 1
          },
          "first_name": {
            "description": "The Record Contact's first name, or null if the Contact has been deleted.",
            "type": "string",
            "example": "Charlotte",
            "nullable": true
          },
          "last_name": {
            "description": "The Record Contact's last name, or null if the Contact has been deleted.",
            "type": "string",
            "example": "Potter",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "record_id",
          "contact_id",
          "first_name",
          "last_name"
        ]
      },
      "RecordMetric": {
        "description": "Record Metric is the stats of a Record.",
        "type": "object",
        "properties": {
          "record_id": {
            "description": "The Record ID the data belongs to.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "metric_id": {
            "description": "The Metric ID the data belongs to.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "value": {
            "anyOf": [
              {
                "type": "number",
                "format": "float",
                "description": "The number value of the Record Metric.",
                "example": 52.95
              },
              {
                "type": "integer",
                "description": "The currency value of the Record Metric, the amount in the smallest monetary unit of your account's currency.",
                "example": 1825
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "record_id",
          "metric_id",
          "value"
        ]
      },
      "BookedResource": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The Booked Resource's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "booking_id": {
            "description": "The ID of the Booking the Booked Resource belongs to.",
            "type": "integer",
            "example": 32,
            "minimum": 1
          },
          "sequence_id": {
            "description": "The ID of the Booked Resource, when the Booked Resource is linked to a sequence.",
            "type": "string",
            "format": "uuid",
            "example": "a8fde5c0-13fd-484e-ac92-f9bd2c175904",
            "nullable": true
          },
          "resource_id": {
            "description": "The ID of the resource that is booked.",
            "type": "integer",
            "example": 23,
            "minimum": 1
          },
          "quantity": {
            "description": "The number that is required of the Booked Resource.",
            "type": "integer",
            "example": 50
          },
          "starts_at": {
            "description": "Date and time the Booked Resource starts.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z"
          },
          "ends_at": {
            "description": "Date and time the Booked Resource ends.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T11:10:32Z"
          },
          "created_at": {
            "description": "Date and time the Booked Resource was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Booked Resource.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Booked Resource was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Booked Resource.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "booking_id",
          "sequence_id",
          "resource_id",
          "quantity",
          "starts_at",
          "ends_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Booking": {
        "description": "A single Booking from the Bookings's module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Booking's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "identifier": {
            "description": "The unique identifier for the Booking.",
            "type": "string",
            "example": "es4fj4sg"
          },
          "sequence_id": {
            "description": "The Booking's sequence ID.",
            "type": "integer",
            "example": 213,
            "minimum": 1,
            "nullable": true
          },
          "name": {
            "description": "The Booking's name.",
            "type": "string",
            "example": "Gibson's Wedding"
          },
          "reference": {
            "description": "The Booking's reference. All Bookings in a sequence share a reference, otherwise this is unique to the Booking.",
            "type": "string",
            "example": "B-00001"
          },
          "type_id": {
            "description": "The Booking's type ID.",
            "type": "integer",
            "example": 5,
            "minimum": 1
          },
          "event_id": {
            "description": "The ID of the event, when the Booking is linked to an event.",
            "type": "integer",
            "example": 120,
            "minimum": 1,
            "nullable": true
          },
          "customer_id": {
            "description": "The ID of the customer, when the Booking is linked to a customer.",
            "type": "integer",
            "example": 12,
            "minimum": 1,
            "nullable": true
          },
          "starts_at": {
            "description": "Date and time the Booking starts.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z"
          },
          "ends_at": {
            "description": "Date and time the Booking ends.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T11:10:32Z"
          },
          "status": {
            "description": "The current status of the Booking.",
            "type": "string",
            "example": "confirmed",
            "enum": [
              "confirmed",
              "cancelled",
              "pending",
              "declined"
            ]
          },
          "description": {
            "description": "The description of the Booking.",
            "type": "string",
            "example": "The marriage of John Gibson and Anita Davis."
          },
          "image": {
            "description": "A collection of different sized variations of an Image.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "thumbnail": {
                "description": "The thumbnail Image url. Thumbnail images are 128x128px.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_thumb.jpg"
              },
              "small": {
                "description": "The small resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_sm.jpg"
              },
              "medium": {
                "description": "The medium resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_md.jpg"
              },
              "large": {
                "description": "The large resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_lg.jpg"
              },
              "uploaded_at": {
                "description": "Date and time the Image was uploaded at.",
                "type": "string",
                "format": "date-time",
                "example": "2014-04-25T10:10:32Z",
                "nullable": true
              }
            },
            "required": [
              "thumbnail",
              "small",
              "medium",
              "large",
              "uploaded_at"
            ]
          },
          "show_on_calendar": {
            "description": "Whether the Booking will be shown on the calendar or not.",
            "type": "boolean",
            "example": false
          },
          "payment_enabled": {
            "description": "Whether the Booking has payments enabled or not.",
            "type": "boolean",
            "example": false
          },
          "site_ids": {
            "description": "List of all site IDs the Booking belongs to.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              1,
              5,
              10
            ]
          },
          "created_at": {
            "description": "Date and time the Booking was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Booking.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "created_source": {
            "description": "The source of the Booking.",
            "type": "string",
            "example": "churchsuite",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Booking was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Booking.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "identifier",
          "sequence_id",
          "name",
          "reference",
          "type_id",
          "event_id",
          "customer_id",
          "starts_at",
          "ends_at",
          "status",
          "description",
          "image",
          "show_on_calendar",
          "payment_enabled",
          "site_ids",
          "created_at",
          "created_by",
          "created_source",
          "modified_at",
          "modified_by"
        ]
      },
      "Charge": {
        "description": "A single Charge from the Booking's module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Charge's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "booking_id": {
            "description": "The ID of the Booking this Charge is for.",
            "type": "integer",
            "example": 139,
            "minimum": 1
          },
          "name": {
            "description": "The name of the Charge.",
            "type": "string",
            "example": "Catering fee"
          },
          "amount": {
            "description": "The Charge amount, in the smallest unit of the account currency.",
            "type": "integer",
            "example": 3999
          },
          "invoice_number": {
            "description": "The Charge's invoice number.",
            "type": "string",
            "example": "87294/A"
          },
          "description": {
            "description": "The description of the Charge.",
            "type": "string",
            "example": "Cost of catering provision."
          },
          "visible": {
            "description": "Whether the Charge will be visible in Booking emails and on Booking pages.",
            "type": "boolean",
            "example": true
          },
          "due_date": {
            "description": "The date the Charge is due by.",
            "type": "string",
            "format": "date",
            "example": "2014-04-25",
            "nullable": true
          },
          "paid": {
            "description": "Whether the Charge has been paid or not.",
            "type": "boolean",
            "example": false
          },
          "price_id": {
            "description": "This is now deprecated and will always return null as there is no ongoing relationship between a Price and a Charge.",
            "type": "integer",
            "example": 23,
            "deprecated": true,
            "minimum": 1,
            "nullable": true
          },
          "payment_id": {
            "description": "The payment ID of the Charge, or null if it is unpaid.",
            "type": "string",
            "example": "ch_3OAA2pBDXJ4HwByY1GjuYc6L",
            "nullable": true
          },
          "payment_method": {
            "description": "The method of payment used to to pay the Charge, or null if it is unpaid.",
            "type": "string",
            "example": "card",
            "enum": [
              "api",
              "bank",
              "card",
              "cash",
              "cheque"
            ],
            "nullable": true
          },
          "paid_at": {
            "description": "Date and time the payment was created, or null if it is unpaid.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "maxLength": 30,
            "nullable": true
          },
          "payment_status": {
            "description": "The status of the payment.",
            "type": "string",
            "example": "paid",
            "enum": [
              "credit",
              "failed",
              "free",
              "full_refund",
              "overpaid",
              "paid",
              "partial_refund",
              "partial",
              "processing",
              "unpaid"
            ]
          },
          "refund_id": {
            "description": "The ID of the refund for this Charge, or null if it has not been refunded.",
            "type": "string",
            "example": "re_3O4K7UBDXJ4HwByY1THhUR4f",
            "maxLength": 30,
            "nullable": true
          },
          "refund_amount": {
            "description": "The amount that has been refunded for this Charge, or null if it has not been refunded, in the smallest unit of account currency.",
            "type": "integer",
            "example": 3999,
            "minimum": 1,
            "nullable": true
          },
          "refunded_at": {
            "description": "Date and time the refund was created, or null if it has not been refunded.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Charge was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Charge.",
            "type": "string",
            "example": "kelly",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Charge was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Charge.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "booking_id",
          "name",
          "amount",
          "invoice_number",
          "description",
          "visible",
          "paid",
          "due_date",
          "price_id",
          "payment_id",
          "payment_method",
          "paid_at",
          "payment_status",
          "refund_id",
          "refund_amount",
          "refunded_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Customer": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The Customer's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "contact_id": {
            "description": "The Contact ID if the Customer is linked to a Contact.",
            "type": "integer",
            "example": 256,
            "minimum": 1,
            "nullable": true
          },
          "first_name": {
            "description": "The first name of the Customer.",
            "type": "string",
            "example": "Tyler"
          },
          "last_name": {
            "description": "The last name of the Customer.",
            "type": "string",
            "example": "Spring"
          },
          "mobile": {
            "description": "The mobile number of the Customer.",
            "type": "string",
            "example": "07700700153"
          },
          "email": {
            "description": "The email address of the Customer.",
            "type": "string",
            "format": "email",
            "example": "tylerspring@kingshopechurch.com",
            "nullable": true
          },
          "telephone": {
            "description": "The phone number of the Customer.",
            "type": "string",
            "example": "01154960231"
          },
          "job": {
            "description": "The occupation of the Customer.",
            "type": "string",
            "example": "Plumber"
          },
          "employer": {
            "description": "The employer of the Customer.",
            "type": "string",
            "example": "Spring Plumbing"
          },
          "all_sites": {
            "description": "Whether the Customer belongs to all sites or not.",
            "type": "boolean",
            "example": false
          },
          "site_ids": {
            "description": "List of all site IDs the Customer belongs to.",
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1
            },
            "example": [
              1,
              5,
              10
            ]
          },
          "address": {
            "description": "A street Address.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "line_1": {
                "description": "The first line of the Address",
                "type": "string",
                "example": "Floor 2"
              },
              "line_2": {
                "description": "The second line of the Address",
                "type": "string",
                "example": "1 Broadway"
              },
              "line_3": {
                "description": "The third line of the Address",
                "type": "string",
                "example": "Lace Market",
                "nullable": true
              },
              "city": {
                "description": "The city of the Address",
                "type": "string",
                "example": "Nottingham"
              },
              "county": {
                "description": "The county of the Address",
                "type": "string",
                "example": "Nottinghamshire"
              },
              "country": {
                "description": "The country of the Address, in ISO3166 alpha 2 format",
                "type": "string",
                "example": "GB",
                "maxLength": 2,
                "minLength": 2,
                "nullable": true
              },
              "postcode": {
                "description": "The postcode of the Address",
                "type": "string",
                "example": "NG1 1PR"
              },
              "latitude": {
                "description": "The latitude of the Address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": 52.952089,
                "nullable": true
              },
              "longitude": {
                "description": "The longitude of the Address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": -1.1448,
                "nullable": true
              }
            },
            "required": [
              "line_1",
              "line_2",
              "line_3",
              "city",
              "county",
              "country",
              "postcode",
              "latitude",
              "longitude"
            ]
          },
          "custom_fields": {
            "description": "Custom Field responses for this resource",
            "type": "array",
            "items": {
              "type": "object",
              "description": "Custom Field responses for this resource",
              "properties": {
                "id": {
                  "description": "The ID of the Custom Field",
                  "type": "integer",
                  "example": 1
                },
                "field_type": {
                  "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                  "type": "string",
                  "example": "text",
                  "enum": [
                    "checkbox",
                    "date",
                    "email",
                    "phone",
                    "radio",
                    "select",
                    "text",
                    "textarea"
                  ]
                },
                "value": {
                  "nullable": true,
                  "oneOf": [
                    {
                      "type": "string",
                      "description": "The raw value of a text, textarea, email, phone or date.",
                      "example": "support@churchsuite.com"
                    },
                    {
                      "type": "object",
                      "description": "The UUID of the selected response for a radio or select field.",
                      "example": {
                        "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                      },
                      "properties": {
                        "id": {
                          "description": "The UUID",
                          "type": "string",
                          "format": "uuid",
                          "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                          "maxLength": 36,
                          "minLength": 36
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "array",
                      "description": "An array of objects which contains the UUIDs of the selected responses for a checkbox field. If no checkboxes are selected an empty array will be returned.",
                      "items": {
                        "type": "object",
                        "description": "The UUID of the selected response for a radio or select field.",
                        "example": {
                          "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                        },
                        "properties": {
                          "id": {
                            "description": "The UUID",
                            "type": "string",
                            "format": "uuid",
                            "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                            "maxLength": 36,
                            "minLength": 36
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false
                      }
                    }
                  ]
                }
              },
              "required": [
                "id",
                "value",
                "field_type"
              ],
              "additionalProperties": false
            }
          },
          "status": {
            "description": "The current status of the Customer.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "archived_at": {
            "description": "Date and time the Customer was archived.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Customer was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Customer.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Customer was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Customer.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "contact_id",
          "first_name",
          "last_name",
          "mobile",
          "email",
          "telephone",
          "job",
          "employer",
          "all_sites",
          "site_ids",
          "address",
          "custom_fields",
          "status",
          "archived_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Price": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The Price's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The name of the Price.",
            "type": "string",
            "example": "Church bell ringing"
          },
          "amount": {
            "description": "The Price amount in the smallest monetary unit of your account's currency.",
            "type": "integer",
            "example": 5025,
            "minimum": 50
          },
          "resource_id": {
            "description": "The Price's resource ID or null if not linked to a resource.",
            "type": "integer",
            "example": 12,
            "minimum": 1,
            "nullable": true
          },
          "type_id": {
            "description": "The Price's Type ID or null if not linked to a Type.",
            "type": "integer",
            "example": 95,
            "minimum": 1,
            "nullable": true
          },
          "description": {
            "description": "The Price's description.",
            "type": "string",
            "example": "Ringing of the church bells."
          },
          "starts_at": {
            "description": "The date the Price begins.",
            "type": "string",
            "format": "date",
            "example": "2023-01-20",
            "nullable": true
          },
          "ends_at": {
            "description": "The date the Price ends.",
            "type": "string",
            "format": "date",
            "example": "2028-01-25",
            "nullable": true
          },
          "per_unit": {
            "description": "Whether the Price is per unit or not.",
            "type": "boolean",
            "example": true
          },
          "time_unit": {
            "description": "Whether the Price is charged per hour of resource usage, per day, or is a fixed Price.",
            "type": "string",
            "example": "hour",
            "enum": [
              "day",
              "hour",
              "fixed"
            ]
          },
          "exclude_setup": {
            "description": "Whether calculated charges will exclude resource usage outside of booking's times.",
            "type": "boolean",
            "example": true
          },
          "due_days": {
            "description": "The number of days after the Booking's date that payment is due. For payments due before the Booking's date, the value will be negative.",
            "type": "integer",
            "example": 14,
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Price was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Price.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Price was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Price.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "amount",
          "resource_id",
          "type_id",
          "description",
          "starts_at",
          "ends_at",
          "per_unit",
          "time_unit",
          "exclude_setup",
          "due_days",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "ResourceItem": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The Resource's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The name of the Resource.",
            "type": "string",
            "example": "Chair"
          },
          "category": {
            "description": "The category of Resource.",
            "type": "string",
            "example": "Hall items"
          },
          "description": {
            "description": "The description of the Resource.",
            "type": "string",
            "example": "One of the hall chairs for both child and adult use."
          },
          "all_sites": {
            "description": "Whether the Resource belongs to all sites or not.",
            "type": "boolean",
            "example": false
          },
          "site_ids": {
            "description": "List of all site IDs the Resource belongs to.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              1,
              5,
              10
            ]
          },
          "visible_to": {
            "$ref": "#/components/schemas/Tag/properties/visible_to"
          },
          "quantity": {
            "description": "The quantity of Resources available, or null if unlimited.",
            "type": "integer",
            "example": 200,
            "nullable": true
          },
          "order": {
            "description": "The positional order of the Resource.",
            "type": "integer",
            "example": 1,
            "minimum": 1
          },
          "status": {
            "description": "The current status of the Resource.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "archived_at": {
            "description": "Date and time the Resource was last archived.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Resource was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Resource.",
            "type": "string",
            "example": "hannah",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Resource was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Resource.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "category",
          "description",
          "all_sites",
          "site_ids",
          "visible_to",
          "quantity",
          "order",
          "status",
          "archived_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "TagResource1": {
        "description": "A Tag Resource represents a Person who is part of a Tag.",
        "type": "object",
        "properties": {
          "person": {
            "description": "The Person to link to the Tag.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "description": "The Person's type, indicating whether they are a Child, Contact, Customer or Giver.",
                "type": "string",
                "example": "bookings_customer",
                "enum": [
                  "bookings_customer"
                ]
              },
              "id": {
                "description": "The Person's ID.",
                "type": "integer",
                "example": 12,
                "minimum": 1
              }
            },
            "required": [
              "type",
              "id"
            ]
          },
          "customer_id": {
            "description": "This is no longer recommended - please use `person` to get the Person's details. The Customer's ID.",
            "type": "integer",
            "example": 12,
            "deprecated": true,
            "minimum": 1
          },
          "tag_id": {
            "description": "The Tag's ID.",
            "type": "integer",
            "example": 5,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "person",
          "customer_id",
          "tag_id"
        ]
      },
      "TagResourceAdd1": {
        "description": "Create a Tag Resource, linking a Person to a Tag.",
        "type": "object",
        "properties": {
          "person": {
            "description": "The Person to link to the Tag.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "description": "The Person's type, indicating whether they are a Child, Contact, Customer or Giver.",
                "type": "string",
                "example": "bookings_customer",
                "enum": [
                  "bookings_customer"
                ]
              },
              "id": {
                "description": "The Person's ID.",
                "type": "integer",
                "example": 12,
                "minimum": 1
              }
            },
            "required": [
              "type",
              "id"
            ]
          },
          "tag_id": {
            "description": "The Tag's ID.",
            "type": "integer",
            "example": 5,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "person",
          "tag_id"
        ]
      },
      "Type": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The Type's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "brand_id": {
            "description": "The Brand ID of the Type.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The name of the Type.",
            "type": "string",
            "example": "Internal bookings"
          },
          "color": {
            "description": "The Type's hexadecimal colour value.",
            "type": "string",
            "example": "#ab12cd"
          },
          "payment_enabled": {
            "description": "Whether the Type has payments enabled or not.",
            "type": "boolean",
            "example": false
          },
          "payment_instructions": {
            "description": "The html instructions for payment, or null if there is no instruction or payment is not enabled.",
            "type": "string",
            "example": " <p>Please quote <strong>Booking Ref ::booking_reference::</strong> in the transaction reference, so we can identify your payment.<br /></p>",
            "nullable": true
          },
          "confirmation_email": {
            "description": "Confirmation email details.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "sender_email": {
                "description": "The sender's email address for the confirmation email.",
                "type": "string",
                "format": "email",
                "example": "admin@kingshopechurch.co.uk"
              },
              "sender_name": {
                "description": "The sender's name for the confirmation email.",
                "type": "string",
                "example": "Kings Hope Booking"
              },
              "subject": {
                "description": "The subject for the confirmation email.",
                "type": "string",
                "example": "You're booked!"
              },
              "body": {
                "description": "The html body for the confirmation email.",
                "type": "string",
                "example": "<div>Dear ::first_name::,</div> <div>&nbsp;</div> <div>Here are your details!</div>"
              }
            },
            "required": [
              "sender_email",
              "sender_name",
              "subject",
              "body"
            ]
          },
          "status": {
            "description": "The current status of the Type.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "archived_at": {
            "description": "Date and time the Type was last archived.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Type was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Type.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Type was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Type.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "brand_id",
          "name",
          "color",
          "payment_enabled",
          "payment_instructions",
          "confirmation_email",
          "status",
          "created_at",
          "created_by",
          "archived_at",
          "modified_at",
          "modified_by"
        ]
      },
      "Category": {
        "description": "A single Category from the Calendar module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Category's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The Category's name.",
            "type": "string",
            "example": "Family"
          },
          "color": {
            "description": "The Category's hexadecimal colour value.",
            "type": "string",
            "example": "#ab12cd"
          },
          "brand_id": {
            "description": "The Brand ID linked to the Category.",
            "type": "integer",
            "example": 1,
            "minimum": 1
          },
          "status": {
            "description": "The current status of the Category",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "archived_at": {
            "description": "Date and time the Category was archived.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Category was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Category.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Category was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Category.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "color",
          "brand_id",
          "status",
          "archived_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "CategoryWrite": {
        "type": "object",
        "properties": {
          "name": {
            "description": "The Category's name.",
            "type": "string",
            "example": "Family",
            "maxLength": 50,
            "minLength": 1
          },
          "color": {
            "description": "The Category's hexadecimal colour value.",
            "type": "string",
            "example": "#ab12cd",
            "pattern": "^#([a-f0-9]{6})$"
          },
          "brand_id": {
            "description": "The Brand ID linked to the Category.",
            "type": "integer",
            "example": 18,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "color",
          "brand_id"
        ]
      },
      "Event": {
        "description": "A single Event from the Calendar module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Event's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "identifier": {
            "description": "The unique identifier for the Event.",
            "type": "string",
            "example": "gi8fj4sj"
          },
          "sequence_id": {
            "description": "The Event's sequence ID.",
            "type": "integer",
            "example": 213,
            "minimum": 1,
            "nullable": true
          },
          "brand_id": {
            "description": "The Brand ID linked to the Event.",
            "type": "integer",
            "example": 1,
            "minimum": 1
          },
          "booking_id": {
            "description": "If the Event is linked to a Booking, the Booking's ID, otherwise null.",
            "type": "integer",
            "example": 1,
            "minimum": 1,
            "nullable": true
          },
          "name": {
            "description": "The Event's name.",
            "type": "string",
            "example": "Gibson's Wedding"
          },
          "starts_at": {
            "description": "Date and time the Event starts.",
            "type": "string",
            "format": "date-time",
            "example": "2018-01-01T10:00:00Z"
          },
          "ends_at": {
            "description": "Date and time the Event ends.",
            "type": "string",
            "format": "date-time",
            "example": "2018-01-01T11:00:00Z"
          },
          "status": {
            "description": "The current status of the Event.",
            "type": "string",
            "example": "confirmed",
            "enum": [
              "confirmed",
              "cancelled",
              "pending"
            ]
          },
          "description": {
            "description": "The description of the Event.",
            "type": "string",
            "example": "The reception of John Gibson and Anita Davis."
          },
          "category_id": {
            "description": "The Event's category ID.",
            "type": "integer",
            "example": 25
          },
          "visibility": {
            "description": "Event visibility settings",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "my": {
                "description": "Visibility settings for My ChurchSuite",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "visible": {
                    "description": "Whether the Event is visible in My ChurchSuite at all.",
                    "type": "boolean",
                    "example": true
                  },
                  "visible_to": {
                    "description": "List of tags who can view this Event.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "The Tag ID",
                          "type": "integer",
                          "example": 12,
                          "minimum": 1
                        },
                        "module": {
                          "description": "The Tag module",
                          "type": "string",
                          "example": "children",
                          "enum": [
                            "addressbook",
                            "children"
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "module"
                      ],
                      "additionalProperties": false
                    },
                    "example": [
                      {
                        "id": 12,
                        "module": "addressbook"
                      }
                    ]
                  },
                  "featured_events": {
                    "description": "Whether the Event should be shown in featured events in My ChurchSuite.",
                    "type": "boolean",
                    "example": true
                  }
                },
                "required": [
                  "visible",
                  "visible_to",
                  "featured_events"
                ]
              },
              "embed": {
                "description": "Whether the Event is visible in Embed.",
                "type": "boolean",
                "example": true
              },
              "connect": {
                "description": "Whether the Event is visible in Connect.",
                "type": "boolean",
                "example": true
              }
            },
            "required": [
              "my",
              "embed",
              "connect"
            ]
          },
          "signup_options": {
            "description": "Sign-Up options for the Event, or null if sign-up is not enabled.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "capacity": {
                "description": "The maximum number of people who can sign up for the Event.",
                "type": "integer",
                "example": 200,
                "nullable": true
              },
              "sequence_signup": {
                "description": "If selected, all sign-ups will be saved against the Event sequence rather than the individual Event.",
                "type": "boolean",
                "example": true
              },
              "my_signup": {
                "description": "Whether this Event can be signed up to in My.",
                "type": "boolean",
                "example": true
              },
              "embed_signup": {
                "description": "Whether this Event can be signed up to in Embed/Connect.",
                "type": "boolean",
                "example": true
              },
              "allow_cancel": {
                "description": "Whether a person can cancel a Sign-Up to this Event.",
                "type": "boolean",
                "example": true
              },
              "confirmation_email": {
                "description": "Confirmation email details.",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "sender_email": {
                    "description": "The sender's email address for the confirmation email.",
                    "type": "string",
                    "format": "email",
                    "example": "admin@kingshopechurch.co.uk"
                  },
                  "sender_name": {
                    "description": "The sender's name for the confirmation email.",
                    "type": "string",
                    "example": "Kings Hope Booking"
                  },
                  "subject": {
                    "description": "The subject for the confirmation email.",
                    "type": "string",
                    "example": "You're booked!"
                  },
                  "body": {
                    "description": "The html body for the confirmation email.",
                    "type": "string",
                    "example": "<div>Dear ::first_name::,</div> <div>&nbsp;</div> <div>Here are your details!</div>"
                  }
                },
                "required": [
                  "sender_email",
                  "sender_name",
                  "subject",
                  "body"
                ]
              }
            },
            "required": [
              "capacity",
              "sequence_signup",
              "my_signup",
              "embed_signup",
              "allow_cancel",
              "confirmation_email"
            ]
          },
          "image": {
            "description": "A collection of different sized variations of an Image.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "thumbnail": {
                "description": "The thumbnail Image url. Thumbnail images are 128x128px.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_thumb.jpg"
              },
              "small": {
                "description": "The small resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_sm.jpg"
              },
              "medium": {
                "description": "The medium resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_md.jpg"
              },
              "large": {
                "description": "The large resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_lg.jpg"
              },
              "uploaded_at": {
                "description": "Date and time the Image was uploaded at.",
                "type": "string",
                "format": "date-time",
                "example": "2014-04-25T10:10:32Z",
                "nullable": true
              }
            },
            "required": [
              "thumbnail",
              "small",
              "medium",
              "large",
              "uploaded_at"
            ]
          },
          "location": {
            "description": "The location of the Event or Group, whether in-person or online.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "name": {
                "description": "The name of the location.",
                "type": "string",
                "example": "Zoom"
              },
              "type": {
                "description": "Whether the Event or Group is online or at a physical location.",
                "type": "string",
                "example": "online",
                "enum": [
                  "online",
                  "physical"
                ]
              },
              "address": {
                "description": "The location address.",
                "type": "string",
                "example": "NG1 1PR",
                "nullable": true
              },
              "latitude": {
                "description": "The latitude of the address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": 52.952089,
                "nullable": true
              },
              "longitude": {
                "description": "The longitude of the address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": -1.1448,
                "nullable": true
              },
              "url": {
                "description": "The url of the online location.",
                "type": "string",
                "example": "https:zoom.us/123456789",
                "nullable": true
              }
            },
            "required": [
              "name",
              "type",
              "address",
              "latitude",
              "longitude",
              "url"
            ]
          },
          "all_sites": {
            "description": "Whether the Event belongs to all sites or not.",
            "type": "boolean",
            "example": false
          },
          "site_ids": {
            "description": "List of all site IDs the Event belongs to.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              2,
              7,
              16
            ]
          },
          "created_at": {
            "description": "Date and time the Event was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Event.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "created_source": {
            "description": "The source of the Event - for example, an import CSV filename.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Event was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Event.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "identifier",
          "sequence_id",
          "brand_id",
          "name",
          "starts_at",
          "ends_at",
          "status",
          "description",
          "category_id",
          "visibility",
          "signup_options",
          "image",
          "location",
          "all_sites",
          "site_ids",
          "created_at",
          "created_by",
          "created_source",
          "modified_at",
          "modified_by"
        ]
      },
      "Invite": {
        "description": "A single Event Invite from the Calendar module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Invite's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "event_id": {
            "description": "The Invite's Event ID.",
            "type": "integer",
            "example": 213,
            "minimum": 1
          },
          "signup_id": {
            "description": "The Invite's Sign-Up ID.",
            "type": "integer",
            "example": 213,
            "minimum": 1,
            "nullable": true
          },
          "contact_id": {
            "description": "The Contact ID where the Invite is linked to a Contact.",
            "type": "integer",
            "example": 1,
            "minimum": 1,
            "nullable": true
          },
          "child_id": {
            "description": "The Child ID where the Invite is linked to a Child.",
            "type": "integer",
            "example": 1,
            "minimum": 1,
            "nullable": true
          },
          "ticket_ids": {
            "description": "List of any Ticket IDs the Invite is linked to.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              1,
              18
            ]
          },
          "comment": {
            "description": "The Invites's comment.",
            "type": "string",
            "example": "I am on holiday, so cannot come.",
            "nullable": true
          },
          "status": {
            "description": "The current status of the Invite.",
            "type": "string",
            "example": "accepted",
            "enum": [
              "accepted",
              "declined",
              "not_sent",
              "opened",
              "pending"
            ]
          },
          "opened_at": {
            "description": "Date and time the Invite was first opened.",
            "type": "string",
            "format": "date-time",
            "example": "2018-01-01T10:00:00Z",
            "nullable": true
          },
          "clicked_at": {
            "description": "Date and time the Invite was last clicked.",
            "type": "string",
            "format": "date-time",
            "example": "2018-01-01T11:00:00Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Invite was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Invite.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Invite was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Invite.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "event_id",
          "signup_id",
          "contact_id",
          "child_id",
          "ticket_ids",
          "comment",
          "status",
          "opened_at",
          "clicked_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Note1": {
        "description": "A single Note, as found in multiple modules.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The ID of the Note.",
            "type": "integer",
            "example": 1,
            "minimum": 1,
            "readOnly": true
          },
          "content": {
            "description": "The content of the Note.",
            "example": "Had a conversation about this on 12th of July.",
            "type": "string"
          },
          "pinned": {
            "description": "Whether the Note has been pinned.",
            "type": "boolean",
            "example": true
          },
          "visible_to": {
            "description": "Who the resource is visible to, or null if there are no restrictions.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "just_me": {
                "description": "Whether the resource is visible to just the current user or not.",
                "type": "boolean",
                "example": false
              },
              "user_group_ids": {
                "description": "List of user group IDs the resource is visible to.",
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 1
                },
                "example": [
                  1,
                  5,
                  10
                ]
              }
            },
            "required": [
              "just_me",
              "user_group_ids"
            ]
          },
          "created_at": {
            "description": "Date and time the Note was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true,
            "readOnly": true
          },
          "created_by": {
            "description": "The user that created the Note.",
            "type": "string",
            "example": "neil",
            "nullable": true,
            "readOnly": true
          },
          "modified_at": {
            "description": "Date and time the Note was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true,
            "readOnly": true
          },
          "modified_by": {
            "description": "The user that last modified the Note.",
            "type": "string",
            "example": "anthony",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "content",
          "pinned",
          "visible_to",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "NoteAdd1": {
        "type": "object",
        "properties": {
          "content": {
            "description": "The content of the Note.",
            "example": "Had a conversation about this on 12th of July.",
            "maxLength": 65535,
            "minLength": 1,
            "type": "string"
          },
          "pinned": {
            "description": "Whether the Note should be pinned.",
            "type": "boolean",
            "example": true,
            "default": false
          },
          "visible_to": {
            "oneOf": [
              {
                "type": "object",
                "description": "Who the resource is visible to. Do not include in the request if there are no restrictions. If included in the request, only one of `just_me` or `user_group_ids` can be set.",
                "properties": {
                  "just_me": {
                    "description": "The resource should only be visible to the current user",
                    "type": "boolean",
                    "example": true,
                    "enum": [
                      true
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "description": "Who the resource is visible to, or null if there are no restrictions.",
                "properties": {
                  "user_group_ids": {
                    "description": "List of user group IDs the resource is visible to. You are only able to add user group IDs for user groups you have access to.",
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "example": [
                      13,
                      31
                    ]
                  }
                },
                "additionalProperties": false
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "content"
        ]
      },
      "Signup": {
        "description": "A single Sign-Up from the Calendar module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Sign-Up's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "identifier": {
            "description": "The unique identifier for the Event.",
            "type": "string",
            "example": "gi8fj4sj",
            "nullable": true
          },
          "batch_id": {
            "description": "The Sign-Up's batch ID.",
            "type": "string",
            "example": "8fa381u0-183b-4745-96c5-6180b0144218"
          },
          "event_id": {
            "description": "The Event ID the Sign-Up is linked to.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "ticket_id": {
            "description": "The Ticket ID the Sign-Up is linked to.",
            "type": "integer",
            "example": 12,
            "minimum": 1,
            "nullable": true
          },
          "contact_id": {
            "description": "The Contact ID the Sign-Up is linked to.",
            "type": "integer",
            "example": 12,
            "minimum": 1,
            "nullable": true
          },
          "child_id": {
            "description": "The Child ID the Sign-Up is linked to.",
            "type": "integer",
            "example": 25,
            "minimum": 1,
            "nullable": true
          },
          "first_name": {
            "description": "The Sign-Up's first name.",
            "type": "string",
            "example": "Katie"
          },
          "last_name": {
            "description": "The Sign-Up's last name.",
            "type": "string",
            "example": "Thompson"
          },
          "email": {
            "description": "The Sign-Up's email address.",
            "type": "string",
            "format": "email",
            "example": "kt.thompson@kingshopechurch.com",
            "nullable": true
          },
          "mobile": {
            "description": "The Sign-Up's mobile number.",
            "type": "string",
            "example": "07700900518"
          },
          "method": {
            "description": "The method used to Sign-Up.",
            "type": "string",
            "example": "telephone",
            "enum": [
              "sign-up-sheet",
              "telephone",
              "email",
              "api",
              "public"
            ]
          },
          "paid_amount": {
            "description": "The amount paid on the Sign-Up of smallest unit of account currency.",
            "type": "integer",
            "example": 500,
            "nullable": true
          },
          "cancel_reason": {
            "description": "The reason the Sign-Up cancelled.",
            "type": "string",
            "example": "Dentist appointment",
            "nullable": true
          },
          "refund_amount": {
            "description": "The amount that has been refunded of smallest unit of account currency.",
            "type": "integer",
            "example": 500,
            "nullable": true
          },
          "payment_status": {
            "description": "The current payment status of the Sign-Up.",
            "type": "string",
            "example": "free",
            "enum": [
              "credit",
              "failed",
              "free",
              "full_refund",
              "overpaid",
              "paid",
              "partial_refund",
              "partial",
              "processing",
              "unpaid"
            ]
          },
          "status": {
            "description": "The current status of the Sign-Up",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "cancelled",
              "refunded",
              "reserved"
            ]
          },
          "created_at": {
            "description": "Date and time the Sign-Up was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the sign-Up.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "created_source": {
            "description": "Where the Sign-Up was created.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Sign-Up was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Sign-Up.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "identifier",
          "batch_id",
          "event_id",
          "ticket_id",
          "contact_id",
          "child_id",
          "first_name",
          "last_name",
          "email",
          "mobile",
          "method",
          "paid_amount",
          "cancel_reason",
          "refund_amount",
          "payment_status",
          "status",
          "created_at",
          "created_source",
          "modified_at",
          "modified_by"
        ]
      },
      "Ticket": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The Ticket's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The name of the Ticket.",
            "type": "string",
            "example": "Child Sign-up"
          },
          "event_id": {
            "description": "The Event ID that the Ticket is linked to.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "description": {
            "description": "The description of the Ticket.",
            "type": "string",
            "example": "Child Ticket includes free nugget meal."
          },
          "starts_at": {
            "description": "Date and time the Ticket starts.",
            "type": "string",
            "format": "date-time",
            "example": "2018-01-01T10:10:32Z",
            "nullable": true
          },
          "ends_at": {
            "description": "Date and time the Ticket ends.",
            "type": "string",
            "format": "date-time",
            "example": "2014-02-01T11:10:32Z",
            "nullable": true
          },
          "price": {
            "description": "The price of the Ticket, in the smallest unit of the account currency.",
            "type": "integer",
            "example": 500,
            "nullable": true
          },
          "quantity": {
            "description": "The maximum number of Tickets available.",
            "type": "integer",
            "example": 25,
            "nullable": true
          },
          "num_remaining": {
            "description": "The number of Tickets that remain available, and have not been taken or reserved.",
            "type": "integer",
            "example": 25,
            "nullable": true
          },
          "hidden": {
            "description": "Whether the Ticket is hidden on the Event page or not.",
            "type": "boolean",
            "example": true
          },
          "pay_on_arrival": {
            "description": "Whether the Ticket can be paid on arrival.",
            "type": "boolean",
            "example": true
          },
          "pay_on_arrival_instructions": {
            "description": "Payment on arrival instructions for the Ticket.",
            "type": "string",
            "example": "Pay on arrival by going to the front desk",
            "nullable": true
          },
          "order": {
            "description": "Order the Ticket appears.",
            "type": "integer",
            "example": 12
          },
          "created_at": {
            "description": "Date and time the Ticket was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Ticket.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Ticket was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Ticket.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "event_id",
          "description",
          "starts_at",
          "ends_at",
          "price",
          "quantity",
          "hidden",
          "pay_on_arrival",
          "pay_on_arrival_instructions",
          "order",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Child": {
        "description": "A single Child from the Children's module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Child's ID",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "first_name": {
            "description": "Child's first name.",
            "type": "string",
            "example": "Bart"
          },
          "middle_name": {
            "description": "Child's middle name.",
            "type": "string",
            "example": "JoJo"
          },
          "last_name": {
            "description": "Child's last name.",
            "type": "string",
            "example": "Simpson"
          },
          "formal_name": {
            "description": "Child's formal name.",
            "type": "string",
            "example": "Viscount Bart"
          },
          "sex": {
            "description": "Child's sex.",
            "type": "string",
            "example": "male",
            "enum": [
              "female",
              "male"
            ],
            "nullable": true
          },
          "date_of_birth": {
            "description": "Child's date of birth.",
            "type": "string",
            "format": "date",
            "example": "1990-04-27",
            "nullable": true
          },
          "mobile": {
            "description": "Child's mobile number.",
            "type": "string",
            "example": "07945 867 987"
          },
          "email": {
            "description": "Child's email address.",
            "type": "string",
            "format": "email",
            "example": "bart@springfield.com",
            "nullable": true
          },
          "address": {
            "description": "A street Address.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "line_1": {
                "description": "The first line of the Address",
                "type": "string",
                "example": "Floor 2"
              },
              "line_2": {
                "description": "The second line of the Address",
                "type": "string",
                "example": "1 Broadway"
              },
              "line_3": {
                "description": "The third line of the Address",
                "type": "string",
                "example": "Lace Market",
                "nullable": true
              },
              "city": {
                "description": "The city of the Address",
                "type": "string",
                "example": "Nottingham"
              },
              "county": {
                "description": "The county of the Address",
                "type": "string",
                "example": "Nottinghamshire"
              },
              "country": {
                "description": "The country of the Address, in ISO3166 alpha 2 format",
                "type": "string",
                "example": "GB",
                "maxLength": 2,
                "minLength": 2,
                "nullable": true
              },
              "postcode": {
                "description": "The postcode of the Address",
                "type": "string",
                "example": "NG1 1PR"
              },
              "latitude": {
                "description": "The latitude of the Address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": 52.952089,
                "nullable": true
              },
              "longitude": {
                "description": "The longitude of the Address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": -1.1448,
                "nullable": true
              }
            },
            "required": [
              "line_1",
              "line_2",
              "line_3",
              "city",
              "county",
              "country",
              "postcode",
              "latitude",
              "longitude"
            ]
          },
          "custom_fields": {
            "description": "Custom Field responses for this resource",
            "type": "array",
            "items": {
              "type": "object",
              "description": "Custom Field responses for this resource",
              "properties": {
                "id": {
                  "description": "The ID of the Custom Field",
                  "type": "integer",
                  "example": 1
                },
                "field_type": {
                  "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                  "type": "string",
                  "example": "text",
                  "enum": [
                    "checkbox",
                    "date",
                    "email",
                    "phone",
                    "radio",
                    "select",
                    "text",
                    "textarea"
                  ]
                },
                "value": {
                  "nullable": true,
                  "oneOf": [
                    {
                      "type": "string",
                      "description": "The raw value of a text, textarea, email, phone or date.",
                      "example": "support@churchsuite.com"
                    },
                    {
                      "type": "object",
                      "description": "The UUID of the selected response for a radio or select field.",
                      "example": {
                        "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                      },
                      "properties": {
                        "id": {
                          "description": "The UUID",
                          "type": "string",
                          "format": "uuid",
                          "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                          "maxLength": 36,
                          "minLength": 36
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "array",
                      "description": "An array of objects which contains the UUIDs of the selected responses for a checkbox field. If no checkboxes are selected an empty array will be returned.",
                      "items": {
                        "type": "object",
                        "description": "The UUID of the selected response for a radio or select field.",
                        "example": {
                          "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                        },
                        "properties": {
                          "id": {
                            "description": "The UUID",
                            "type": "string",
                            "format": "uuid",
                            "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                            "maxLength": 36,
                            "minLength": 36
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false
                      }
                    }
                  ]
                }
              },
              "required": [
                "id",
                "value",
                "field_type"
              ],
              "additionalProperties": false
            }
          },
          "communication": {
            "description": "The person's communication preferences.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "general_email": {
                "description": "Whether this person has consented to receiving general emails.",
                "type": "boolean",
                "example": false
              },
              "general_sms": {
                "description": "Whether this person has consented to receiving general SMS messages.",
                "type": "boolean",
                "example": true
              },
              "phone": {
                "description": "Whether this person has consented to receiving phone calls.",
                "type": "boolean",
                "example": false
              },
              "post": {
                "description": "Whether this person has consented to receiving post.",
                "example": true,
                "type": "boolean"
              },
              "rota_email": {
                "description": "Whether this person has consented to receiving rota emails.",
                "type": "boolean",
                "example": false
              },
              "rota_sms": {
                "description": "Whether this person has consented to receiving rota SMS messages.",
                "type": "boolean",
                "example": true
              }
            },
            "required": [
              "general_email",
              "general_sms",
              "phone",
              "post",
              "rota_email",
              "rota_sms"
            ]
          },
          "school": {
            "description": "Child's school.",
            "type": "string",
            "example": "Springfield Elementary"
          },
          "school_year_offset": {
            "description": "Adjusted school year value based on the Child's age.",
            "type": "integer",
            "example": -1,
            "maximum": 2,
            "minimum": -2
          },
          "school_year_name": {
            "description": "The name of the Child's current school year, in the account's region.",
            "type": "string",
            "example": "Reception"
          },
          "medical_short": {
            "description": "Condensed medical information about the Child.",
            "type": "string",
            "example": "hayfever"
          },
          "medical": {
            "description": "Full medical information about the Child.",
            "type": "string",
            "example": "Hayfever - takes one tablet a day"
          },
          "doctor_details": {
            "description": "Child's doctors details.",
            "type": "string",
            "example": "Doctor Hibbert"
          },
          "additional_needs": {
            "description": "Any additional needs declared about the Child.",
            "type": "string",
            "example": "Dyslexic"
          },
          "additional_info": {
            "description": "Additional information about the Child.",
            "type": "string",
            "example": "This could be anything."
          },
          "photo_video_consent": {
            "description": "Photo/video consent for the Child.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "internal": {
                "description": "Consent given for internal presentation.",
                "type": "boolean",
                "example": true
              },
              "external": {
                "description": "Consent given for external presentation.",
                "type": "boolean",
                "example": true
              }
            },
            "required": [
              "internal",
              "external"
            ]
          },
          "ongoing_consent": {
            "description": "Ongoing consent information for a Contact or Child.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "requested_at": {
                "description": "The date and time of the ongoing consent was created.",
                "type": "string",
                "format": "date-time",
                "example": "2023-09-19T14:52:40Z",
                "nullable": true
              },
              "granted_at": {
                "description": "The date and time the ongoing consent was granted.",
                "type": "string",
                "format": "date-time",
                "example": "2023-09-19T14:52:40Z",
                "nullable": true
              },
              "granted_by": {
                "description": "Name of the person who granted the ongoing consent.",
                "type": "string",
                "example": "Jessica Horn",
                "nullable": true
              }
            },
            "required": [
              "requested_at",
              "granted_at",
              "granted_by"
            ]
          },
          "all_sites": {
            "description": "Whether the Child belongs to all sites or not.",
            "type": "boolean",
            "example": false
          },
          "site_ids": {
            "description": "List of all Site IDs the Child belongs to.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              1,
              5,
              10
            ]
          },
          "login": {
            "description": "My ChurchSuite/CharitySuite login information.",
            "type": "object",
            "$comment": "This can currently be used for both reading and writing",
            "additionalProperties": false,
            "properties": {
              "enabled": {
                "description": "Whether the person is able to log into My.",
                "type": "boolean",
                "example": false
              },
              "invited": {
                "description": "Whether the person has been invited to create a My account.",
                "type": "boolean",
                "example": true,
                "$comment": "Readonly because this is never changed directly by the user",
                "readOnly": true
              }
            },
            "required": [
              "enabled",
              "invited"
            ]
          },
          "privacy": {
            "description": "The Child's privacy settings.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name_visible": {
                "description": "Whether the Child's name is visible in My.",
                "type": "boolean",
                "example": true
              },
              "address_visible": {
                "description": "Whether the Child's address is visible in My.",
                "type": "boolean",
                "example": true
              },
              "mobile_visible": {
                "description": "Whether the Child's mobile is visible in My.",
                "type": "boolean",
                "example": false
              },
              "email_visible": {
                "description": "Whether the Child's email is visible in My.",
                "type": "boolean",
                "example": false
              }
            },
            "required": [
              "name_visible",
              "address_visible",
              "mobile_visible",
              "email_visible"
            ]
          },
          "status": {
            "description": "Current status of the Child.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived",
              "pending"
            ]
          },
          "image": {
            "description": "A collection of different sized variations of an Image.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "thumbnail": {
                "description": "The thumbnail Image url. Thumbnail images are 128x128px.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_thumb.jpg"
              },
              "small": {
                "description": "The small resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_sm.jpg"
              },
              "medium": {
                "description": "The medium resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_md.jpg"
              },
              "large": {
                "description": "The large resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_lg.jpg"
              },
              "uploaded_at": {
                "description": "Date and time the Image was uploaded at.",
                "type": "string",
                "format": "date-time",
                "example": "2014-04-25T10:10:32Z",
                "nullable": true
              }
            },
            "required": [
              "thumbnail",
              "small",
              "medium",
              "large",
              "uploaded_at"
            ]
          },
          "archived_at": {
            "description": "Date and time the Child's record was archived.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Child's record was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Child's record.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Child's record was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Child's record.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "first_name",
          "middle_name",
          "last_name",
          "formal_name",
          "sex",
          "date_of_birth",
          "mobile",
          "email",
          "address",
          "custom_fields",
          "communication",
          "school",
          "school_year_offset",
          "medical_short",
          "medical",
          "doctor_details",
          "additional_needs",
          "additional_info",
          "photo_video_consent",
          "ongoing_consent",
          "all_sites",
          "site_ids",
          "login",
          "privacy",
          "status",
          "archived_at",
          "image",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "ChildAdd": {
        "description": "Add a Child in the Children's module.",
        "type": "object",
        "properties": {
          "first_name": {
            "description": "The first name of the Child.",
            "type": "string",
            "example": "Jess",
            "maxLength": 50
          },
          "middle_name": {
            "description": "The middle name of the Child.",
            "type": "string",
            "example": "Hannah",
            "maxLength": 50
          },
          "last_name": {
            "description": "The last name of the Child.",
            "type": "string",
            "example": "Miller",
            "maxLength": 50
          },
          "formal_name": {
            "description": "The formal name of the Child.",
            "type": "string",
            "example": "Lady Jessica",
            "maxLength": 50
          },
          "sex": {
            "description": "The sex of the Child.",
            "type": "string",
            "example": "male",
            "enum": [
              "female",
              "male"
            ]
          },
          "date_of_birth": {
            "description": "The Child's date of birth.",
            "type": "string",
            "format": "date",
            "example": "2025-04-27"
          },
          "mobile": {
            "description": "The Child's mobile number.",
            "type": "string",
            "example": "07945 867 987"
          },
          "email": {
            "description": "The Child's email address.",
            "type": "string",
            "format": "email",
            "example": "bart@springfield.com"
          },
          "address": {
            "description": "A street Address.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "line_1": {
                "description": "The first line of the Address",
                "type": "string",
                "example": "Floor 2",
                "maxLength": 100
              },
              "line_2": {
                "description": "The second line of the Address",
                "type": "string",
                "example": "1 Broadway",
                "maxLength": 100
              },
              "line_3": {
                "description": "The third line of the Address",
                "type": "string",
                "example": "Lace Market",
                "maxLength": 100
              },
              "city": {
                "description": "The city of the Address",
                "type": "string",
                "example": "Nottingham",
                "maxLength": 50
              },
              "county": {
                "description": "The county of the Address",
                "type": "string",
                "example": "Nottinghamshire",
                "maxLength": 50
              },
              "country": {
                "description": "The country of the Address, in ISO3166 alpha 2 format",
                "type": "string",
                "example": "GB",
                "maxLength": 2,
                "minLength": 2
              },
              "postcode": {
                "description": "The postcode of the Address",
                "type": "string",
                "example": "NG1 1PR",
                "maxLength": 10,
                "pattern": "^([a-zA-Z0-9\\-\\s]{3,10})?$"
              }
            }
          },
          "custom_fields": {
            "description": "Custom Field responses for this resource",
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "object",
                  "title": "Text Field",
                  "description": "A Custom Field for this resource",
                  "properties": {
                    "id": {
                      "description": "The ID of the Custom Field",
                      "type": "integer",
                      "example": 1,
                      "minimum": 1
                    },
                    "field_type": {
                      "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                      "type": "string",
                      "example": "text",
                      "enum": [
                        "text",
                        "textarea",
                        "phone",
                        "date"
                      ]
                    },
                    "value": {
                      "description": "The raw value of a text, textarea, phone or date.",
                      "type": "string",
                      "example": "I like the songs."
                    }
                  },
                  "required": [
                    "id",
                    "field_type",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "title": "Email Field",
                  "description": "A Custom Field for this resource",
                  "properties": {
                    "id": {
                      "description": "The ID of the Custom Field",
                      "type": "integer",
                      "example": 1,
                      "minimum": 1
                    },
                    "field_type": {
                      "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                      "type": "string",
                      "example": "email",
                      "enum": [
                        "email"
                      ]
                    },
                    "value": {
                      "description": "The raw value of an email.",
                      "type": "string",
                      "format": "email",
                      "example": "support@churchsuite.com",
                      "maxLength": 100
                    }
                  },
                  "required": [
                    "id",
                    "field_type",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "title": "UUID Field",
                  "description": "A Custom Field for this resource",
                  "properties": {
                    "id": {
                      "description": "The ID of the Custom Field",
                      "type": "integer",
                      "example": 1,
                      "minimum": 1
                    },
                    "field_type": {
                      "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                      "type": "string",
                      "example": "radio",
                      "enum": [
                        "radio",
                        "select"
                      ]
                    },
                    "value": {
                      "description": "The UUID of the selected response for a radio or select field.",
                      "type": "object",
                      "example": {
                        "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                      },
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "The UUID",
                          "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                          "minLength": 36,
                          "maxLength": 36
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "field_type",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "title": "UUID List Field",
                  "description": "A Custom Field for this resource",
                  "properties": {
                    "id": {
                      "description": "The ID of the Custom Field",
                      "type": "integer",
                      "example": 1,
                      "minimum": 1
                    },
                    "field_type": {
                      "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                      "type": "string",
                      "example": "checkbox",
                      "enum": [
                        "checkbox"
                      ]
                    },
                    "value": {
                      "description": "A list of UUIDs of the selected responses for a checkbox field.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "description": "The UUID of the selected response for a checkbox field.",
                        "example": {
                          "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                        },
                        "properties": {
                          "id": {
                            "description": "The UUID",
                            "type": "string",
                            "format": "uuid",
                            "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                            "maxLength": 36,
                            "minLength": 36
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "id",
                    "field_type",
                    "value"
                  ],
                  "additionalProperties": false
                }
              ],
              "discriminator": {
                "propertyName": "field_type"
              }
            }
          },
          "communication": {
            "description": "The person's communication preferences. If no data is provided, the module default communication preferences will be used.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "general_email": {
                "description": "Whether this person has consented to receiving general emails.",
                "type": "boolean",
                "example": false
              },
              "general_sms": {
                "description": "Whether this person has consented to receiving general SMS messages.",
                "type": "boolean",
                "example": true
              },
              "phone": {
                "description": "Whether this person has consented to receiving phone calls.",
                "type": "boolean",
                "example": false
              },
              "post": {
                "description": "Whether this person has consented to receiving post.",
                "example": true,
                "type": "boolean"
              },
              "rota_email": {
                "description": "Whether this person has consented to receiving rota emails.",
                "type": "boolean",
                "example": false
              },
              "rota_sms": {
                "description": "Whether this person has consented to receiving rota SMS messages.",
                "type": "boolean",
                "example": true
              }
            },
            "required": [
              "general_email",
              "general_sms",
              "phone",
              "post",
              "rota_email",
              "rota_sms"
            ]
          },
          "school": {
            "description": "The Child's school.",
            "type": "string",
            "example": "Springfield Elementary",
            "maxLength": 50
          },
          "school_year_offset": {
            "description": "Adjusted school year value based on the Child's age.",
            "type": "integer",
            "example": -1,
            "default": 0,
            "maximum": 2,
            "minimum": -2
          },
          "medical_short": {
            "description": "Condensed medical information about the Child.",
            "type": "string",
            "example": "hayfever",
            "maxLength": 100
          },
          "medical": {
            "description": "Full medical information about the Child.",
            "type": "string",
            "example": "Hayfever - takes one tablet a day",
            "maxLength": 65535
          },
          "doctor_details": {
            "description": "Child's doctors details.",
            "type": "string",
            "example": "Doctor Hibbert",
            "maxLength": 65535
          },
          "additional_needs": {
            "description": "Any additional needs declared about the Child.",
            "type": "string",
            "example": "Dyslexic",
            "maxLength": 65535
          },
          "additional_info": {
            "description": "Additional information about the Child.",
            "type": "string",
            "example": "This could be anything.",
            "maxLength": 250
          },
          "login": {
            "$ref": "#/components/schemas/Child/properties/login"
          },
          "privacy": {
            "description": "The Child's privacy settings. If no data is provided, the default privacy settings will be used.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name_visible": {
                "description": "Whether the Child's name is visible in My.",
                "type": "boolean",
                "example": true
              },
              "address_visible": {
                "description": "Whether the Child's address is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": true
              },
              "mobile_visible": {
                "description": "Whether the Child's mobile is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": false
              },
              "email_visible": {
                "description": "Whether the Child's email is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": false
              }
            },
            "required": [
              "name_visible",
              "address_visible",
              "mobile_visible",
              "email_visible"
            ]
          },
          "all_sites": {
            "description": "Whether the Child belongs to All Sites.",
            "type": "boolean",
            "example": true
          },
          "site_ids": {
            "description": "An array of Site IDs that the Child belongs to. If `all_sites` is `true`, this will be overridden. You are only able to add site IDs for sites you have the relevant permission for.",
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "example": 2
            },
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "first_name",
          "last_name",
          "all_sites",
          "site_ids"
        ]
      },
      "ChildEdit": {
        "description": "Edit a single Child from the Children's module.",
        "type": "object",
        "properties": {
          "first_name": {
            "description": "The first name of the Child.",
            "type": "string",
            "example": "Jess",
            "maxLength": 50
          },
          "middle_name": {
            "description": "The middle name of the Child.",
            "type": "string",
            "example": "Hannah",
            "maxLength": 50
          },
          "last_name": {
            "description": "The last name of the Child.",
            "type": "string",
            "example": "Miller",
            "maxLength": 50
          },
          "formal_name": {
            "description": "The formal name of the Child.",
            "type": "string",
            "example": "lady Jessica",
            "maxLength": 50
          },
          "sex": {
            "description": "The sex of the Child.",
            "type": "string",
            "example": "male",
            "enum": [
              "female",
              "male"
            ],
            "nullable": true
          },
          "date_of_birth": {
            "description": "The Child's date of birth.",
            "type": "string",
            "format": "date",
            "example": "2010-04-27",
            "nullable": true
          },
          "mobile": {
            "description": "The Child's mobile number.",
            "type": "string",
            "example": "07945 867 987"
          },
          "email": {
            "description": "The Child's email address.",
            "type": "string",
            "format": "email",
            "example": "bart@springfield.com",
            "nullable": true
          },
          "address": {
            "description": "Edit a street Address.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "line_1": {
                "description": "The first line of the Address",
                "type": "string",
                "example": "Floor 2",
                "maxLength": 100
              },
              "line_2": {
                "description": "The second line of the Address",
                "type": "string",
                "example": "1 Broadway",
                "maxLength": 100
              },
              "line_3": {
                "description": "The third line of the Address",
                "type": "string",
                "example": "Lace Market",
                "maxLength": 100
              },
              "city": {
                "description": "The city of the Address",
                "type": "string",
                "example": "Nottingham",
                "maxLength": 50
              },
              "county": {
                "description": "The county of the Address",
                "type": "string",
                "example": "Nottinghamshire",
                "maxLength": 50
              },
              "country": {
                "description": "The country of the Address, in ISO3166 alpha 2 format",
                "type": "string",
                "example": "GB",
                "maxLength": 2,
                "minLength": 2,
                "nullable": true
              },
              "postcode": {
                "description": "The postcode of the Address",
                "type": "string",
                "example": "NG1 1PR",
                "maxLength": 10,
                "pattern": "^([a-zA-Z0-9\\-\\s]{3,10})?$"
              }
            },
            "required": [
              "line_1",
              "line_2",
              "line_3",
              "city",
              "county",
              "country",
              "postcode"
            ]
          },
          "custom_fields": {
            "$ref": "#/components/schemas/ChildAdd/properties/custom_fields"
          },
          "communication": {
            "description": "The person's communication preferences.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "general_email": {
                "description": "Whether this person has consented to receiving general emails.",
                "type": "boolean",
                "example": false
              },
              "general_sms": {
                "description": "Whether this person has consented to receiving general SMS messages.",
                "type": "boolean",
                "example": true
              },
              "phone": {
                "description": "Whether this person has consented to receiving phone calls.",
                "type": "boolean",
                "example": false
              },
              "post": {
                "description": "Whether this person has consented to receiving post.",
                "example": true,
                "type": "boolean"
              },
              "rota_email": {
                "description": "Whether this person has consented to receiving rota emails.",
                "type": "boolean",
                "example": false
              },
              "rota_sms": {
                "description": "Whether this person has consented to receiving rota SMS messages.",
                "type": "boolean",
                "example": true
              }
            },
            "required": [
              "general_email",
              "general_sms",
              "phone",
              "post",
              "rota_email",
              "rota_sms"
            ]
          },
          "school": {
            "description": "The Child's school.",
            "type": "string",
            "example": "Springfield Elementary",
            "maxLength": 50
          },
          "school_year_offset": {
            "description": "Adjusted school year value based on the Child's age.",
            "type": "integer",
            "example": -1,
            "maximum": 2,
            "minimum": -2
          },
          "medical_short": {
            "description": "Condensed medical information about the Child.",
            "type": "string",
            "example": "hayfever",
            "maxLength": 100
          },
          "medical": {
            "description": "Full medical information about the Child.",
            "type": "string",
            "example": "Hayfever - takes one tablet a day",
            "maxLength": 65535
          },
          "doctor_details": {
            "description": "Child's doctors details.",
            "type": "string",
            "example": "Doctor Hibbert",
            "maxLength": 65535
          },
          "additional_needs": {
            "description": "Any additional needs declared about the Child.",
            "type": "string",
            "example": "Dyslexic",
            "maxLength": 65535
          },
          "additional_info": {
            "description": "Additional information about the Child.",
            "type": "string",
            "example": "This could be anything.",
            "maxLength": 250
          },
          "login": {
            "$ref": "#/components/schemas/Child/properties/login"
          },
          "privacy": {
            "description": "The Child's privacy settings",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "name_visible": {
                "description": "Whether the Child's name is visible in My.",
                "type": "boolean",
                "example": true
              },
              "address_visible": {
                "description": "Whether the Child's address is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": true
              },
              "mobile_visible": {
                "description": "Whether the Child's mobile is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": false
              },
              "email_visible": {
                "description": "Whether the Child's email is visible in My. This will only be respected if name_visible is true, else it will not be visible.",
                "type": "boolean",
                "example": false
              }
            },
            "required": [
              "name_visible",
              "address_visible",
              "mobile_visible",
              "email_visible"
            ]
          },
          "all_sites": {
            "description": "Whether the Child belongs to All Sites.",
            "type": "boolean",
            "example": true
          },
          "site_ids": {
            "description": "An array of Site IDs that the Child belongs to. If `all_sites` is `true`, this will be overridden. You are only able to add site IDs for sites you have the relevant permission for.",
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "example": 2
            },
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "additional_info",
          "additional_needs",
          "address",
          "all_sites",
          "communication",
          "custom_fields",
          "date_of_birth",
          "doctor_details",
          "email",
          "first_name",
          "formal_name",
          "last_name",
          "login",
          "medical",
          "medical_short",
          "middle_name",
          "mobile",
          "privacy",
          "school",
          "school_year_offset",
          "sex",
          "site_ids"
        ]
      },
      "Group": {
        "description": "A single Group from the Children's module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The ID of the Group.",
            "type": "integer",
            "example": 1,
            "minimum": 1
          },
          "name": {
            "description": "The name of the Group.",
            "type": "string",
            "example": "Impact"
          },
          "group_setup_id": {
            "description": "The ID of the Group Setup the Group belongs to.",
            "type": "integer",
            "example": 5,
            "minimum": 1
          },
          "checkin_badges_child": {
            "description": "The number of badges printed per child.",
            "type": "integer",
            "example": 1,
            "maximum": 99,
            "minimum": 0
          },
          "checkin_badges_pickup": {
            "description": "The number of pick-up badges printed per unique check-in code.",
            "type": "integer",
            "example": 1,
            "maximum": 99,
            "minimum": 0
          },
          "checkin_badges_room": {
            "description": "The number of room badges printed per Child.",
            "type": "integer",
            "example": 1,
            "maximum": 99,
            "minimum": 0
          },
          "checkin_capacity": {
            "description": "The maximum capacity of the Group.",
            "type": "integer",
            "example": 6,
            "maximum": 999,
            "minimum": 0,
            "nullable": true
          },
          "checkin_ratio": {
            "description": "The maximum number of children allowed per adult.",
            "type": "integer",
            "example": 1,
            "maximum": 999,
            "minimum": 0,
            "nullable": true
          },
          "entry_age_years": {
            "description": "The age of entry to the Group in years.",
            "type": "integer",
            "example": 6,
            "minimum": 0
          },
          "entry_age_months": {
            "description": "The age of entry to the Group in months.",
            "type": "integer",
            "example": 4,
            "maximum": 11,
            "minimum": 0
          },
          "entry_month": {
            "description": "The month the children are processed into the Group, or 0 if they process on their birthday.",
            "type": "integer",
            "example": 9,
            "maximum": 12,
            "minimum": 0
          },
          "status": {
            "description": "Current status of the Group.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "archived_at": {
            "description": "Date and time the Groups was archived.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Group was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Group.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Group was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Group.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "group_setup_id",
          "checkin_badges_child",
          "checkin_badges_pickup",
          "checkin_badges_room",
          "checkin_capacity",
          "checkin_ratio",
          "entry_age_years",
          "entry_age_months",
          "entry_month",
          "status",
          "archived_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "GroupMember": {
        "description": "A single Group Member from the Children's module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Group Member's ID",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "child_id": {
            "description": "The Group Member's Child ID",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "group_id": {
            "description": "The Group Member's Group ID",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "created_at": {
            "description": "Date and time the Group Member was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Group Member.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Group Member was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Group Member.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "child_id",
          "group_id",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "GroupSetup": {
        "description": "A single Group Setup from the Children's module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Group Setup's ID",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "all_sites": {
            "description": "Whether the Group Setup belongs to all sites or not.",
            "type": "boolean",
            "example": false
          },
          "site_ids": {
            "description": "List of all Site IDs the Group Setup belongs to.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              1,
              5,
              10
            ]
          },
          "name": {
            "description": "The name of the Group Setup.",
            "type": "string",
            "example": "Holiday Club"
          },
          "max_age_years": {
            "description": "The year component of the maximum age a Child can be in this Group Setup.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "max_age_months": {
            "description": "The month component of the maximum age a Child can be in this Group Setup.",
            "type": "integer",
            "example": 0,
            "maximum": 12,
            "minimum": 0
          },
          "exit_month": {
            "description": "The month that Children progress from this Group Setup, or 0 if they progress on their birthday.",
            "type": "integer",
            "example": 8,
            "maximum": 12,
            "minimum": 0
          },
          "status": {
            "description": "Current status of the Group Setup.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "created_at": {
            "description": "Date and time the Group Setup was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Group Setup.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Group Setup was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Group Setup.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "all_sites",
          "site_ids",
          "name",
          "max_age_years",
          "max_age_months",
          "exit_month",
          "status",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "ParentCarerRelationship": {
        "description": "A single Parent/Carer relationship of a Child from the Children's module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The relationship ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "child_id": {
            "description": "The Child's ID the relationship is linked to.",
            "type": "integer",
            "example": 148,
            "minimum": 1
          },
          "is_primary": {
            "description": "Whether the relationship is a primary Parent/Carer relationship or not.",
            "type": "boolean",
            "example": true
          },
          "relationship_type": {
            "description": "The relationship between the Parent/Carer and the Child.",
            "type": "string",
            "example": "guardian",
            "enum": [
              "aunt/uncle",
              "foster parent",
              "grandparent",
              "guardian",
              "other",
              "parent",
              "step-parent"
            ]
          },
          "order": {
            "description": "The order that the relationship appears in a list.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "parent_carer": {
            "description": "A single Parent/Carer from the Children's module.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "first_name": {
                "description": "Parent/Carer's first name.",
                "type": "string",
                "example": "Bart"
              },
              "last_name": {
                "description": "Parent/Carer's last name.",
                "type": "string",
                "example": "Simpson"
              },
              "is_contact": {
                "description": "Whether the Parent/Carer is a Contact or not.",
                "type": "boolean",
                "example": true
              },
              "contact_id": {
                "description": "The Parent/Carer's Contact ID if they are in the Address Book, or null if they are not.",
                "type": "integer",
                "example": 78,
                "minimum": 1,
                "nullable": true
              },
              "mobile": {
                "description": "Parent/Carer's mobile number.",
                "type": "string",
                "example": "07700 900 258"
              },
              "email": {
                "description": "Parent/Carer's email address.",
                "type": "string",
                "format": "email",
                "example": "bestgrandparent@parentcarers.com",
                "nullable": true
              },
              "telephone": {
                "description": "Parent/Carer's telephone number.",
                "type": "string",
                "example": "01632 960 000"
              },
              "communication": {
                "description": "The Parent/Carer's communication preferences.",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "general_email": {
                    "description": "Whether this Parent/Carer has consented to receiving general emails.",
                    "type": "boolean",
                    "example": false
                  },
                  "general_sms": {
                    "description": "Whether this Parent/Carer has consented to receiving general SMS messages.",
                    "type": "boolean",
                    "example": true
                  },
                  "phone": {
                    "description": "Whether this Parent/Carer has consented to receiving phone calls.",
                    "type": "boolean",
                    "example": false
                  }
                },
                "required": [
                  "general_email",
                  "general_sms",
                  "phone"
                ]
              },
              "status": {
                "description": "Current status of the Parent/Carer, if the Parent/Carer is a Contact this will reflect their Contact status, for non-Contacts Parent/Carers this will always be active.",
                "type": "string",
                "example": "active",
                "default": "active",
                "enum": [
                  "active",
                  "archived",
                  "pending"
                ]
              },
              "created_at": {
                "description": "Date and time the Parent/Carer's record was last created.",
                "type": "string",
                "format": "date-time",
                "example": "2023-09-19T14:52:40Z",
                "nullable": true
              },
              "created_by": {
                "description": "The user who last created the Parent/Carer's record.",
                "type": "string",
                "example": "anthony",
                "nullable": true
              },
              "created_source": {
                "description": "The source of the Parent/Carer - for example, an import CSV filename.",
                "type": "string",
                "example": "neil",
                "nullable": true
              },
              "modified_at": {
                "description": "Date and time the Parent/Carer's record was last modified.",
                "type": "string",
                "format": "date-time",
                "example": "2023-09-19T14:52:40Z",
                "nullable": true
              },
              "modified_by": {
                "description": "The user who last modified the Parent/Carer's record.",
                "type": "string",
                "example": "anthony",
                "nullable": true
              }
            },
            "required": [
              "first_name",
              "last_name",
              "is_contact",
              "contact_id",
              "mobile",
              "email",
              "telephone",
              "communication",
              "status",
              "created_at",
              "created_by",
              "created_source",
              "modified_at",
              "modified_by"
            ]
          },
          "created_at": {
            "description": "Date and time the relationship's record was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the relationship's record.",
            "type": "string",
            "example": "neil",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "child_id",
          "is_primary",
          "relationship_type",
          "order",
          "parent_carer",
          "created_at",
          "created_by"
        ]
      },
      "TagResource2": {
        "description": "A Tag Resource represents a Person who is part of a Tag.",
        "type": "object",
        "properties": {
          "person": {
            "description": "The Person to link to the Tag.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "description": "The Person's type, indicating whether they are a Child, Contact, Customer or Giver.",
                "type": "string",
                "example": "children_child",
                "enum": [
                  "children_child"
                ]
              },
              "id": {
                "description": "The Person's ID.",
                "type": "integer",
                "example": 12,
                "minimum": 1
              }
            },
            "required": [
              "type",
              "id"
            ]
          },
          "child_id": {
            "description": "This is no longer recommended - please use `person` to get the Person's details. The Child's ID.",
            "type": "integer",
            "example": 12,
            "deprecated": true,
            "minimum": 1
          },
          "tag_id": {
            "description": "The Tag's ID.",
            "type": "integer",
            "example": 5,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "person",
          "child_id",
          "tag_id"
        ]
      },
      "TagResourceAdd2": {
        "description": "Create a Tag Resource, linking a Person to a Tag.",
        "type": "object",
        "properties": {
          "person": {
            "description": "The Person to link to the Tag.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "description": "The Person's type, indicating whether they are a Child, Contact, Customer or Giver.",
                "type": "string",
                "example": "children_child",
                "enum": [
                  "children_child"
                ]
              },
              "id": {
                "description": "The Person's ID.",
                "type": "integer",
                "example": 12,
                "minimum": 1
              }
            },
            "required": [
              "type",
              "id"
            ]
          },
          "tag_id": {
            "description": "The Tag's ID.",
            "type": "integer",
            "example": 5,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "person",
          "tag_id"
        ]
      },
      "Donation": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The Donation's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "batch_id": {
            "description": "The ID of the Batch the Donation is linked to, or null if it isn't linked one.",
            "type": "integer",
            "example": 1226,
            "minimum": 1,
            "nullable": true
          },
          "giver_id": {
            "description": "The ID of the Giver the Donation is linked to.",
            "type": "integer",
            "example": 87,
            "minimum": 1
          },
          "fund_id": {
            "description": "The ID of the Fund the Donation is linked to.",
            "type": "integer",
            "example": 7,
            "minimum": 1
          },
          "pledge_id": {
            "description": "The ID of the Pledge the Donation is linked to, or null if it isn't linked one.",
            "type": "integer",
            "example": 87,
            "minimum": 1,
            "nullable": true
          },
          "claim_id": {
            "description": "The ID of the Claim the Donation is linked to, or null if it isn't linked to one, or if the account is not in the UK.",
            "type": "integer",
            "example": 365,
            "minimum": 1,
            "nullable": true
          },
          "date": {
            "description": "The date of the Donation.",
            "type": "string",
            "format": "date",
            "example": "2021-01-01"
          },
          "amount": {
            "description": "The Donation amount, in the smallest unit of the account currency.",
            "type": "integer",
            "example": 3999
          },
          "method": {
            "description": "The method through which the Donation was made. Value must be either system-defined or a user-defined value from the module settings.",
            "type": "string",
            "example": "bank"
          },
          "cheque_number": {
            "description": "When method is cheque, the cheque number associated with the Donation.",
            "type": "integer",
            "example": 123456,
            "maxLength": 20,
            "nullable": true
          },
          "notes": {
            "description": "The notes of the Donation.",
            "type": "string",
            "example": "Legacy gift",
            "nullable": true
          },
          "giftaid": {
            "description": "The Gift Aid details of the Donation, or null if the account is not in the UK.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "percentage_giver": {
                "description": "The percentage of Gift Aid contribution for the Giver, or null if the Giver is not a couple.",
                "type": "integer",
                "example": 20,
                "nullable": true
              },
              "percentage_spouse": {
                "description": "The percentage of Gift Aid contribution for the Giver's spouse, or null if the Giver is not a couple.",
                "type": "integer",
                "example": 80,
                "nullable": true
              },
              "claimable_amount": {
                "description": "The amount of Gift Aid that is claimable for this Donation, in the smallest unit of the account currency, or null if the Giver does not have a declaration or overrode the declaration.",
                "type": "integer",
                "example": 200,
                "nullable": true
              },
              "claimed_amount": {
                "description": "The amount of Gift Aid that has been claimed for this Donation, in the smallest unit of the account currency, or null if the Donation has not had Gift Aid claimed on it.",
                "type": "integer",
                "example": 200,
                "nullable": true
              },
              "refund_claim_id": {
                "description": "The ID of the Claim the Donation's refunded Gift Aid has been processed in if the Gift Aid has been refunded, or null if the Gift Aid has not been refunded.",
                "type": "integer",
                "example": 365,
                "nullable": true
              },
              "refund_amount": {
                "description": "The amount of Gift Aid that has been refunded for this Donation, in the smallest unit of the account currency, or null if the Gift Aid has not been refunded.",
                "type": "integer",
                "example": 200,
                "nullable": true
              },
              "overridden": {
                "description": "Indicates when Gift Aid has been overridden for the Donation. When true, the Donation should not be subject to Gift Aid, even when a covering declaration exists.",
                "type": "boolean",
                "example": false
              }
            },
            "required": [
              "percentage_giver",
              "percentage_spouse",
              "claimable_amount",
              "claimed_amount",
              "refund_claim_id",
              "refund_amount",
              "overridden"
            ]
          },
          "tax_deductible": {
            "description": "Whether the Donation is tax deductible. Null for accounts outside of AU, CA, HK and US.",
            "type": "boolean",
            "example": true,
            "nullable": true
          },
          "gateway": {
            "description": "For donations processed through a payment gateway, null if a payment gateway has not been used.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "service": {
                "description": "The payment gateway used for the Donation.",
                "type": "string",
                "example": "Stripe"
              },
              "status": {
                "description": "The last reported status for the Donation, as reported by the payment gateway.",
                "type": "string",
                "example": "paid",
                "nullable": true
              },
              "payout_id": {
                "description": "The payment gateway's payout ID for the Donation, null if the Donation has not been paid out.",
                "type": "string",
                "example": "PO000019JL29J1",
                "nullable": true
              },
              "fees": {
                "description": "The total amount of fees for the Donation, in the smallest unit of the account currency.",
                "type": "integer",
                "example": 113,
                "nullable": true
              },
              "paid_out_at": {
                "description": "Date and time the payment gateway reported the Donation was paid out.",
                "type": "string",
                "format": "date",
                "example": "2023-09-19",
                "nullable": true
              },
              "modified_at": {
                "description": "Date and time the payment gateway last reported a change to the Donation.",
                "type": "string",
                "format": "date-time",
                "example": "2023-09-19T14:52:40Z",
                "nullable": true
              }
            },
            "required": [
              "service",
              "status",
              "payout_id",
              "fees",
              "paid_out_at",
              "modified_at"
            ]
          },
          "status": {
            "description": "The current status of the Donation.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "deleted",
              "pending",
              "refunded"
            ]
          },
          "created_at": {
            "description": "Date and time the Donation was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Donation.",
            "type": "string",
            "example": "kelly",
            "nullable": true
          },
          "created_source": {
            "description": "Where the Donation was created.",
            "type": "string",
            "example": "Donate",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Donation was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Donation.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "batch_id",
          "giver_id",
          "fund_id",
          "pledge_id",
          "claim_id",
          "date",
          "amount",
          "method",
          "cheque_number",
          "notes",
          "giftaid",
          "tax_deductible",
          "gateway",
          "status",
          "created_at",
          "created_by",
          "created_source",
          "modified_at",
          "modified_by"
        ]
      },
      "Fund": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The Fund's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "identifier": {
            "description": "The unique identifier for the Fund.",
            "type": "string",
            "example": "es4fj4sg"
          },
          "name": {
            "description": "The name of the Fund.",
            "type": "string",
            "example": "General Church Fund"
          },
          "color": {
            "description": "The Fund's hexadecimal colour value.",
            "type": "string",
            "example": "#ab12cd"
          },
          "brand_id": {
            "description": "The Brand ID linked to the Fund.",
            "type": "integer",
            "example": 1,
            "minimum": 1
          },
          "visible_in_donate": {
            "description": "Whether the Fund is shown in Donate or not.",
            "type": "boolean",
            "example": true
          },
          "visible_in_tap_to_donate": {
            "description": "Whether the Fund is shown in Tap to Donate or not.",
            "type": "boolean",
            "example": true
          },
          "donate_frequency": {
            "description": "The frequency of the donation.",
            "type": "string",
            "example": "oneoff_recurring",
            "enum": [
              "oneoff",
              "oneoff_recurring",
              "recurring"
            ]
          },
          "tap_to_donate_amounts": {
            "description": "The preset amounts available for this fund within the Tap to Donate app.",
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1
            },
            "example": [
              500,
              1000,
              1500
            ]
          },
          "gift_aid": {
            "description": "Whether Gift Aid can be claimed on this Fund, or null if your account cannot have Gift Aid applied to it.",
            "type": "boolean",
            "example": false,
            "nullable": true
          },
          "tax_deductible": {
            "description": "Whether this Fund is tax deductible, or null if your accounts country does not have tax deductible giving.",
            "type": "boolean",
            "example": true,
            "nullable": true
          },
          "confirmation_email": {
            "description": "Confirmation email details.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "sender_email": {
                "description": "The sender's email address for the confirmation email.",
                "type": "string",
                "format": "email",
                "example": "admin@kingshopechurch.co.uk"
              },
              "sender_name": {
                "description": "The sender's name for the confirmation email.",
                "type": "string",
                "example": "Kings Hope Booking"
              },
              "subject": {
                "description": "The subject for the confirmation email.",
                "type": "string",
                "example": "You're booked!"
              },
              "body": {
                "description": "The html body for the confirmation email.",
                "type": "string",
                "example": "<div>Dear ::first_name::,</div> <div>&nbsp;</div> <div>Here are your details!</div>"
              }
            },
            "required": [
              "sender_email",
              "sender_name",
              "subject",
              "body"
            ]
          },
          "description": {
            "description": "The description of the Fund.",
            "type": "string",
            "example": "This fund is for regular giving to the church in all areas."
          },
          "order": {
            "description": "The position of the Fund when ordered.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "status": {
            "description": "The current status of the Fund.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "image": {
            "description": "A collection of different sized variations of an Image.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "thumbnail": {
                "description": "The thumbnail Image url. Thumbnail images are 128x128px.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_thumb.jpg"
              },
              "small": {
                "description": "The small resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_sm.jpg"
              },
              "medium": {
                "description": "The medium resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_md.jpg"
              },
              "large": {
                "description": "The large resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_lg.jpg"
              },
              "uploaded_at": {
                "description": "Date and time the Image was uploaded at.",
                "type": "string",
                "format": "date-time",
                "example": "2014-04-25T10:10:32Z",
                "nullable": true
              }
            },
            "required": [
              "thumbnail",
              "small",
              "medium",
              "large",
              "uploaded_at"
            ]
          },
          "archived_at": {
            "description": "Date and time the Fund was archived.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Fund was created.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Fund.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Fund was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Fund.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "identifier",
          "name",
          "color",
          "brand_id",
          "visible_in_donate",
          "donate_frequency",
          "tap_to_donate_amounts",
          "gift_aid",
          "tax_deductible",
          "confirmation_email",
          "description",
          "order",
          "status",
          "image",
          "archived_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Giver": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The Giver's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "contact_id": {
            "description": "The Contact ID, if the Giver is linked to a Contact.",
            "type": "integer",
            "example": 256,
            "minimum": 1,
            "nullable": true
          },
          "reference": {
            "description": "The unique reference identifier for the Giver.",
            "type": "string",
            "example": "G-0128"
          },
          "bank_references": {
            "description": "An array of bank references for the Giver.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "JaneSmith",
              "JohnDoe"
            ]
          },
          "first_name": {
            "description": "The Giver's first name.",
            "type": "string",
            "example": "Kev"
          },
          "last_name": {
            "description": "The Giver's last name.",
            "type": "string",
            "example": "Bramley"
          },
          "mobile": {
            "description": "The mobile number of the Giver.",
            "type": "string",
            "example": "07700700153"
          },
          "email": {
            "description": "The email address of the Giver.",
            "type": "string",
            "format": "email",
            "example": "kevbramley@kingshopechurch.com",
            "nullable": true
          },
          "telephone": {
            "description": "The phone number of the Giver.",
            "type": "string",
            "example": "01154960231"
          },
          "is_couple": {
            "description": "Whether the Giver is a couple or not.",
            "type": "boolean",
            "example": true
          },
          "spouse_first_name": {
            "description": "The spouse's first name, null if the giver is not a couple.",
            "type": "string",
            "example": "John",
            "nullable": true
          },
          "spouse_last_name": {
            "description": "The spouse's last name, null if the giver is not a couple.",
            "type": "string",
            "example": "Smith",
            "nullable": true
          },
          "giftaid_percentage_giver": {
            "description": "The percentage of giftaid contribution for the Giver, or null if the giver is not a couple or the account is not in the UK.",
            "type": "integer",
            "example": 50,
            "maximum": 100,
            "minimum": 0,
            "nullable": true
          },
          "giftaid_percentage_spouse": {
            "description": "The percentage of giftaid contribution for the Giver's spouse, or null if the giver is not a couple or the account is not in the UK.",
            "type": "integer",
            "example": 50,
            "maximum": 100,
            "minimum": 0,
            "nullable": true
          },
          "first_donation_date": {
            "description": "The date of the Give's first donation or null if no donations have been made.",
            "type": "string",
            "format": "date",
            "example": "2014-04-25",
            "nullable": true
          },
          "last_donation_date": {
            "description": "The date of the Give's last donation or null if no donations have been made.",
            "type": "string",
            "format": "date",
            "example": "2024-08-17",
            "nullable": true
          },
          "site_ids": {
            "description": "The Giver's site ID returned in a single item array.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              1
            ],
            "maxItems": 1,
            "minItems": 1
          },
          "address": {
            "description": "A street Address.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "line_1": {
                "description": "The first line of the Address",
                "type": "string",
                "example": "Floor 2"
              },
              "line_2": {
                "description": "The second line of the Address",
                "type": "string",
                "example": "1 Broadway"
              },
              "line_3": {
                "description": "The third line of the Address",
                "type": "string",
                "example": "Lace Market",
                "nullable": true
              },
              "city": {
                "description": "The city of the Address",
                "type": "string",
                "example": "Nottingham"
              },
              "county": {
                "description": "The county of the Address",
                "type": "string",
                "example": "Nottinghamshire"
              },
              "country": {
                "description": "The country of the Address, in ISO3166 alpha 2 format",
                "type": "string",
                "example": "GB",
                "maxLength": 2,
                "minLength": 2,
                "nullable": true
              },
              "postcode": {
                "description": "The postcode of the Address",
                "type": "string",
                "example": "NG1 1PR"
              },
              "latitude": {
                "description": "The latitude of the Address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": 52.952089,
                "nullable": true
              },
              "longitude": {
                "description": "The longitude of the Address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": -1.1448,
                "nullable": true
              }
            },
            "required": [
              "line_1",
              "line_2",
              "line_3",
              "city",
              "county",
              "country",
              "postcode",
              "latitude",
              "longitude"
            ]
          },
          "custom_fields": {
            "description": "Custom Field responses for this resource",
            "type": "array",
            "items": {
              "type": "object",
              "description": "Custom Field responses for this resource",
              "properties": {
                "id": {
                  "description": "The ID of the Custom Field",
                  "type": "integer",
                  "example": 1
                },
                "field_type": {
                  "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                  "type": "string",
                  "example": "text",
                  "enum": [
                    "checkbox",
                    "date",
                    "email",
                    "phone",
                    "radio",
                    "select",
                    "text",
                    "textarea"
                  ]
                },
                "value": {
                  "nullable": true,
                  "oneOf": [
                    {
                      "type": "string",
                      "description": "The raw value of a text, textarea, email, phone or date.",
                      "example": "support@churchsuite.com"
                    },
                    {
                      "type": "object",
                      "description": "The UUID of the selected response for a radio or select field.",
                      "example": {
                        "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                      },
                      "properties": {
                        "id": {
                          "description": "The UUID",
                          "type": "string",
                          "format": "uuid",
                          "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                          "maxLength": 36,
                          "minLength": 36
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "array",
                      "description": "An array of objects which contains the UUIDs of the selected responses for a checkbox field. If no checkboxes are selected an empty array will be returned.",
                      "items": {
                        "type": "object",
                        "description": "The UUID of the selected response for a radio or select field.",
                        "example": {
                          "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                        },
                        "properties": {
                          "id": {
                            "description": "The UUID",
                            "type": "string",
                            "format": "uuid",
                            "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                            "maxLength": 36,
                            "minLength": 36
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false
                      }
                    }
                  ]
                }
              },
              "required": [
                "id",
                "value",
                "field_type"
              ],
              "additionalProperties": false
            }
          },
          "status": {
            "description": "Current status of the Giver.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "archived_at": {
            "description": "Date and time the Giver's record was archived.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Giver's record was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Giver's record.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Giver's record was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Giver's record.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "contact_id",
          "reference",
          "bank_references",
          "first_name",
          "last_name",
          "mobile",
          "email",
          "telephone",
          "is_couple",
          "spouse_first_name",
          "spouse_last_name",
          "giftaid_percentage_giver",
          "giftaid_percentage_spouse",
          "first_donation_date",
          "last_donation_date",
          "site_ids",
          "address",
          "custom_fields",
          "status",
          "archived_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Pledge": {
        "type": "object",
        "properties": {
          "id": {
            "description": "The Pledge's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "giver_id": {
            "description": "The Giver ID the Pledge is linked to.",
            "type": "integer",
            "example": 256,
            "minimum": 1
          },
          "fund_id": {
            "description": "The Fund ID the Pledge is linked to.",
            "type": "integer",
            "example": 256,
            "minimum": 1
          },
          "frequency": {
            "description": "The Pledge's frequency.",
            "type": "string",
            "example": "monthly",
            "enum": [
              "weekly",
              "fortnightly",
              "twice-monthly",
              "monthly",
              "quarterly",
              "yearly"
            ]
          },
          "starts_at": {
            "description": "The date the Pledge begins.",
            "type": "string",
            "format": "date",
            "example": "2023-01-20"
          },
          "ends_at": {
            "description": "The date the Pledge ends.",
            "type": "string",
            "format": "date",
            "example": "2023-01-20",
            "nullable": true
          },
          "amount_recurring": {
            "description": "The Pledge's recurring amount in the smallest monetary unit of your account's currency.",
            "type": "integer",
            "example": 5025,
            "minimum": 50,
            "nullable": true
          },
          "amount_oneoff": {
            "description": "The Pledge's one off amount in the smallest monetary unit of your account's currency.",
            "type": "integer",
            "example": 5025,
            "minimum": 50,
            "nullable": true
          },
          "cancelled_at": {
            "description": "Date and time the Pledge was cancelled.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "cancelled_by": {
            "description": "The user who cancelled the Pledge.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "cancelled_source": {
            "description": "Where the Pledge was cancelled.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "status": {
            "description": "The current status of the Pledge.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "cancelled",
              "expired",
              "future",
              "incomplete"
            ]
          },
          "created_at": {
            "description": "Date and time the Pledge's record was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Pledge's record.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "created_source": {
            "description": "The source of the Pledge.",
            "type": "string",
            "example": "donate",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Pledge's record was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Pledge's record.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "giver_id",
          "fund_id",
          "frequency",
          "starts_at",
          "ends_at",
          "amount_recurring",
          "amount_oneoff",
          "cancelled_at",
          "cancelled_by",
          "cancelled_source",
          "status",
          "created_at",
          "created_by",
          "created_source",
          "modified_at",
          "modified_by"
        ]
      },
      "TagResource3": {
        "description": "A Tag Resource represents a Person who is part of a Tag.",
        "type": "object",
        "properties": {
          "person": {
            "description": "The Person to link to the Tag.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "description": "The Person's type, indicating whether they are a Child, Contact, Customer or Giver.",
                "type": "string",
                "example": "giving_giver",
                "enum": [
                  "giving_giver"
                ]
              },
              "id": {
                "description": "The Person's ID.",
                "type": "integer",
                "example": 12,
                "minimum": 1
              }
            },
            "required": [
              "type",
              "id"
            ]
          },
          "giver_id": {
            "description": "This is no longer recommended - please use `person` to get the Person's details. The Giver's ID.",
            "type": "integer",
            "example": 12,
            "deprecated": true,
            "minimum": 1
          },
          "tag_id": {
            "description": "The Tag's ID.",
            "type": "integer",
            "example": 5,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "person",
          "giver_id",
          "tag_id"
        ]
      },
      "TagResourceAdd3": {
        "description": "Create a Tag Resource, linking a Person to a Tag.",
        "type": "object",
        "properties": {
          "person": {
            "description": "The Person to link to the Tag.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "description": "The Person's type, indicating whether they are a Child, Contact, Customer or Giver.",
                "type": "string",
                "example": "giving_giver",
                "enum": [
                  "giving_giver"
                ]
              },
              "id": {
                "description": "The Person's ID.",
                "type": "integer",
                "example": 12,
                "minimum": 1
              }
            },
            "required": [
              "type",
              "id"
            ]
          },
          "tag_id": {
            "description": "The Tag's ID.",
            "type": "integer",
            "example": 5,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "person",
          "tag_id"
        ]
      },
      "KeyDateEdit1": {
        "description": "A Key Date data.",
        "type": "object",
        "properties": {
          "name": {
            "description": "The Key Date's name.",
            "type": "string",
            "example": "Joined Kings Hope Church",
            "maxLength": 50
          },
          "colour": {
            "description": "The Key Date's colour.",
            "type": "string",
            "example": "blue",
            "enum": [
              "blue",
              "red",
              "orange",
              "green",
              "purple",
              "pink",
              "brown",
              "grey"
            ]
          },
          "visible_to": {
            "description": "Who the resource is visible to. Null if there are no restrictions. If `just_me` is true, `user_group_ids` must be empty or not set. If `just_me` is false, `user_group_ids` must contain at least one User Group ID.",
            "type": "object",
            "nullable": true,
            "oneOf": [
              {
                "type": "object",
                "title": "Visible to User Groups",
                "properties": {
                  "just_me": {
                    "description": "The resource should only be visible to the current user",
                    "type": "boolean",
                    "example": false,
                    "enum": [
                      false
                    ]
                  },
                  "user_group_ids": {
                    "description": "List of user group IDs the resource is visible to.",
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "example": [
                      13,
                      31
                    ]
                  }
                },
                "required": [
                  "user_group_ids"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "title": "Visible to just me",
                "properties": {
                  "just_me": {
                    "description": "The resource should only be visible to the current user",
                    "type": "boolean",
                    "example": true,
                    "enum": [
                      true
                    ]
                  },
                  "user_group_ids": {
                    "description": "List of user group IDs the resource is visible to.",
                    "type": "array",
                    "items": {
                      "type": "integer"
                    },
                    "example": [],
                    "maxItems": 0
                  }
                },
                "required": [
                  "just_me"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "colour",
          "visible_to"
        ]
      },
      "Label": {
        "description": "Label data, as found in several modules.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Label's ID.",
            "type": "integer",
            "example": 15,
            "minimum": 1
          },
          "name": {
            "description": "The Label's name.",
            "type": "string",
            "example": "Label"
          },
          "colour": {
            "description": "The Label's colour.",
            "type": "string",
            "example": "blue",
            "enum": [
              "blue",
              "red",
              "orange",
              "green",
              "purple",
              "pink",
              "brown",
              "grey"
            ]
          },
          "multiple_responses": {
            "description": "Whether multiple responses can be selected or not.",
            "type": "boolean",
            "example": true
          },
          "required": {
            "description": "Whether at least one response will be required when this Label is added to a resource",
            "type": "boolean",
            "example": true
          },
          "options": {
            "description": "An array of options for the Label.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "description": "The Label option ID.",
                  "type": "string",
                  "example": "cf17e695-1y75-4b00-pfa2-087581ce1ec7"
                },
                "name": {
                  "description": "The Label option's name.",
                  "type": "string",
                  "example": "North"
                }
              },
              "required": [
                "id",
                "name"
              ],
              "additionalProperties": false
            }
          },
          "order": {
            "description": "The position of the Label when ordered.",
            "type": "integer",
            "example": 5,
            "minimum": 1
          },
          "created_at": {
            "description": "Date and time the Label was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user that created the Label.",
            "type": "string",
            "example": "jennie",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Label was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user that last modified the Label.",
            "type": "string",
            "example": "caroline",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "colour",
          "multiple_responses",
          "required",
          "options",
          "order",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "LabelResource": {
        "description": "A single Label Resource - an instance of a Label for a specific model",
        "type": "object",
        "properties": {
          "resource_id": {
            "description": "The ID of the model the Label Resource belongs to, depending on which module you are accessing.",
            "type": "integer",
            "example": 1,
            "minimum": 1
          },
          "label_id": {
            "description": "The ID of the label the Label Resource belongs to",
            "type": "integer",
            "example": 1,
            "minimum": 1
          },
          "option_ids": {
            "description": "List of option IDs for this Label assigned to this resource",
            "type": "array",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "example": [
              "e85e2162-9a51-4178-9640-53a3da2aaaa1",
              "7aa81321-9ae5-4d31-bd6e-d28cc0e15f09",
              "d4624d04-2b5a-4807-a3c6-adaa295a907c"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "resource_id",
          "label_id",
          "option_ids"
        ]
      },
      "Member": {
        "description": "A single Member from the Network module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Member's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "organisation_id": {
            "description": "The ID of the Organisation this person belongs to.",
            "type": "integer",
            "example": 46,
            "minimum": 1
          },
          "contact_id": {
            "description": "The Members's Contact ID.",
            "type": "integer",
            "example": 1215,
            "minimum": 1,
            "nullable": true
          },
          "role_ids": {
            "description": "List of all role IDs that have been added to this Member.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              2,
              7,
              16
            ]
          },
          "created_at": {
            "description": "Date and time the Member was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Member.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Member was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Member.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "organisation_id",
          "contact_id",
          "role_ids",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Note2": {
        "description": "A single Note, as found in multiple modules.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The ID of the Note.",
            "type": "integer",
            "example": 1,
            "minimum": 1,
            "readOnly": true
          },
          "content": {
            "description": "The content of the Note.",
            "example": "Had a conversation about this on 12th of July.",
            "type": "string"
          },
          "pinned": {
            "description": "Whether the Note has been pinned.",
            "type": "boolean",
            "example": true
          },
          "visible_to": {
            "description": "Who the resource is visible to, or null if there are no restrictions.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "just_me": {
                "description": "Whether the resource is visible to just the current user or not.",
                "type": "boolean",
                "example": false
              },
              "user_group_ids": {
                "description": "List of user group IDs the resource is visible to.",
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 1
                },
                "example": [
                  1,
                  5,
                  10
                ]
              }
            },
            "required": [
              "just_me",
              "user_group_ids"
            ]
          },
          "created_at": {
            "description": "Date and time the Note was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true,
            "readOnly": true
          },
          "created_by": {
            "description": "The user that created the Note.",
            "type": "string",
            "example": "neil",
            "nullable": true,
            "readOnly": true
          },
          "modified_at": {
            "description": "Date and time the Note was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true,
            "readOnly": true
          },
          "modified_by": {
            "description": "The user that last modified the Note.",
            "type": "string",
            "example": "anthony",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "content",
          "pinned",
          "visible_to",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "NoteAdd2": {
        "type": "object",
        "properties": {
          "content": {
            "description": "The content of the Note.",
            "example": "Had a conversation about this on 12th of July.",
            "maxLength": 65535,
            "minLength": 1,
            "type": "string"
          },
          "pinned": {
            "description": "Whether the Note should be pinned.",
            "type": "boolean",
            "example": true,
            "default": false
          },
          "visible_to": {
            "oneOf": [
              {
                "type": "object",
                "description": "Who the resource is visible to. Do not include in the request if there are no restrictions. If included in the request, only one of `just_me` or `user_group_ids` can be set.",
                "properties": {
                  "just_me": {
                    "description": "The resource should only be visible to the current user",
                    "type": "boolean",
                    "example": true,
                    "enum": [
                      true
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "description": "Who the resource is visible to, or null if there are no restrictions.",
                "properties": {
                  "user_group_ids": {
                    "description": "List of user group IDs the resource is visible to. You are only able to add user group IDs for user groups you have access to.",
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "example": [
                      13,
                      31
                    ]
                  }
                },
                "additionalProperties": false
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "content"
        ]
      },
      "Organisation": {
        "description": "A single Organisation from the Network module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Organisation's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The Organisation's name.",
            "type": "string",
            "example": "Kings Hope South"
          },
          "reference": {
            "description": "The internal reference you use to identify the Organisation.",
            "type": "string",
            "example": "017-SU"
          },
          "charity_number": {
            "description": "The Organisation's charity number.",
            "type": "string",
            "example": "128674"
          },
          "email": {
            "description": "The Organisation's email address.",
            "type": "string",
            "format": "email",
            "example": "hello@kingshopesouth.com",
            "nullable": true
          },
          "meeting_address": {
            "$ref": "#/components/schemas/Organisation/properties/office_address"
          },
          "office_address": {
            "description": "A street Address.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "line_1": {
                "description": "The first line of the Address",
                "type": "string",
                "example": "Floor 2"
              },
              "line_2": {
                "description": "The second line of the Address",
                "type": "string",
                "example": "1 Broadway"
              },
              "line_3": {
                "description": "The third line of the Address",
                "type": "string",
                "example": "Lace Market",
                "nullable": true
              },
              "city": {
                "description": "The city of the Address",
                "type": "string",
                "example": "Nottingham"
              },
              "county": {
                "description": "The county of the Address",
                "type": "string",
                "example": "Nottinghamshire"
              },
              "country": {
                "description": "The country of the Address, in ISO3166 alpha 2 format",
                "type": "string",
                "example": "GB",
                "maxLength": 2,
                "minLength": 2,
                "nullable": true
              },
              "postcode": {
                "description": "The postcode of the Address",
                "type": "string",
                "example": "NG1 1PR"
              },
              "latitude": {
                "description": "The latitude of the Address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": 52.952089,
                "nullable": true
              },
              "longitude": {
                "description": "The longitude of the Address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": -1.1448,
                "nullable": true
              }
            },
            "required": [
              "line_1",
              "line_2",
              "line_3",
              "city",
              "county",
              "country",
              "postcode",
              "latitude",
              "longitude"
            ]
          },
          "telephone": {
            "description": "The Organisation's telephone number.",
            "type": "string",
            "example": "02079460000"
          },
          "custom_fields": {
            "description": "Custom Field responses for this resource",
            "type": "array",
            "items": {
              "type": "object",
              "description": "Custom Field responses for this resource",
              "properties": {
                "id": {
                  "description": "The ID of the Custom Field",
                  "type": "integer",
                  "example": 1
                },
                "field_type": {
                  "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                  "type": "string",
                  "example": "text",
                  "enum": [
                    "checkbox",
                    "date",
                    "email",
                    "phone",
                    "radio",
                    "select",
                    "text",
                    "textarea"
                  ]
                },
                "value": {
                  "nullable": true,
                  "oneOf": [
                    {
                      "type": "string",
                      "description": "The raw value of a text, textarea, email, phone or date.",
                      "example": "support@churchsuite.com"
                    },
                    {
                      "type": "object",
                      "description": "The UUID of the selected response for a radio or select field.",
                      "example": {
                        "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                      },
                      "properties": {
                        "id": {
                          "description": "The UUID",
                          "type": "string",
                          "format": "uuid",
                          "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                          "maxLength": 36,
                          "minLength": 36
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "array",
                      "description": "An array of objects which contains the UUIDs of the selected responses for a checkbox field. If no checkboxes are selected an empty array will be returned.",
                      "items": {
                        "type": "object",
                        "description": "The UUID of the selected response for a radio or select field.",
                        "example": {
                          "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                        },
                        "properties": {
                          "id": {
                            "description": "The UUID",
                            "type": "string",
                            "format": "uuid",
                            "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                            "maxLength": 36,
                            "minLength": 36
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false
                      }
                    }
                  ]
                }
              },
              "required": [
                "id",
                "value",
                "field_type"
              ],
              "additionalProperties": false
            }
          },
          "links": {
            "description": "External links for the Organisation.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "https://kingshopesouth.com"
            ]
          },
          "embed": {
            "description": "Whether the Organisation is visible in Embed.",
            "type": "boolean",
            "example": true
          },
          "all_sites": {
            "description": "Whether the Organisation belongs to all sites.",
            "type": "boolean",
            "example": false
          },
          "site_ids": {
            "description": "List of all site IDs the Organisation belongs to.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              1
            ],
            "minItems": 1
          },
          "status": {
            "description": "Current status of the Organisation.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "created_at": {
            "description": "Date and time the Organisation was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Organisation.",
            "type": "string",
            "example": "prince",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Organisation was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Organisation.",
            "type": "string",
            "example": "charis",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "reference",
          "charity_number",
          "email",
          "meeting_address",
          "office_address",
          "telephone",
          "custom_fields",
          "links",
          "embed",
          "all_sites",
          "site_ids",
          "status",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Role": {
        "description": "A single Role from the Network module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Role's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The name of the Role.",
            "type": "string",
            "example": "Senior Leader"
          },
          "order": {
            "description": "The position of the Role when ordered.",
            "type": "integer",
            "example": 6,
            "minimum": 1
          },
          "created_at": {
            "description": "Date and time the Role was created.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Role.",
            "type": "string",
            "example": "kusi",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Role was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Role.",
            "type": "string",
            "example": "lydia",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "order",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "LibraryItem": {
        "description": "A single Library Item from the Planning module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Library Item's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "type_id": {
            "description": "The Library Item's Type ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The Library Item's name.",
            "type": "string",
            "example": "Announcements"
          },
          "duration": {
            "description": "The Library Item's duration in seconds.",
            "type": "integer",
            "example": 125,
            "minimum": 1,
            "nullable": true
          },
          "status": {
            "description": "The current status of the Library Item.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "question_responses": {
            "$ref": "#/components/schemas/PlanItem/properties/question_responses"
          },
          "archived_at": {
            "description": "Date and time the Library Item was archived.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Library Item was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Library Item.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Library Item was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Library Item.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "type_id",
          "name",
          "duration",
          "status",
          "question_responses",
          "archived_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Note3": {
        "description": "A single Note, as found in multiple modules.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The ID of the Note.",
            "type": "integer",
            "example": 1,
            "minimum": 1,
            "readOnly": true
          },
          "content": {
            "description": "The content of the Note.",
            "example": "Had a conversation about this on 12th of July.",
            "type": "string"
          },
          "pinned": {
            "description": "Whether the Note has been pinned.",
            "type": "boolean",
            "example": true
          },
          "visible_to": {
            "description": "Who the resource is visible to, or null if there are no restrictions.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "just_me": {
                "description": "Whether the resource is visible to just the current user or not.",
                "type": "boolean",
                "example": false
              },
              "user_group_ids": {
                "description": "List of user group IDs the resource is visible to.",
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 1
                },
                "example": [
                  1,
                  5,
                  10
                ]
              }
            },
            "required": [
              "just_me",
              "user_group_ids"
            ]
          },
          "created_at": {
            "description": "Date and time the Note was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true,
            "readOnly": true
          },
          "created_by": {
            "description": "The user that created the Note.",
            "type": "string",
            "example": "neil",
            "nullable": true,
            "readOnly": true
          },
          "modified_at": {
            "description": "Date and time the Note was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true,
            "readOnly": true
          },
          "modified_by": {
            "description": "The user that last modified the Note.",
            "type": "string",
            "example": "anthony",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "content",
          "pinned",
          "visible_to",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "NoteAdd3": {
        "type": "object",
        "properties": {
          "content": {
            "description": "The content of the Note.",
            "example": "Had a conversation about this on 12th of July.",
            "maxLength": 65535,
            "minLength": 1,
            "type": "string"
          },
          "pinned": {
            "description": "Whether the Note should be pinned.",
            "type": "boolean",
            "example": true,
            "default": false
          },
          "visible_to": {
            "oneOf": [
              {
                "type": "object",
                "description": "Who the resource is visible to. Do not include in the request if there are no restrictions. If included in the request, only one of `just_me` or `user_group_ids` can be set.",
                "properties": {
                  "just_me": {
                    "description": "The resource should only be visible to the current user",
                    "type": "boolean",
                    "example": true,
                    "enum": [
                      true
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "description": "Who the resource is visible to, or null if there are no restrictions.",
                "properties": {
                  "user_group_ids": {
                    "description": "List of user group IDs the resource is visible to. You are only able to add user group IDs for user groups you have access to.",
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "example": [
                      13,
                      31
                    ]
                  }
                },
                "additionalProperties": false
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "content"
        ]
      },
      "Plan": {
        "description": "A single Plan from the Planning module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Plan's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "identifier": {
            "description": "The unique identifier for the Plan.",
            "type": "string",
            "example": "gi8fj4sj"
          },
          "template_id": {
            "description": "The Template ID where the Plan is created from a Template.",
            "type": "integer",
            "example": 8,
            "minimum": 1,
            "nullable": true
          },
          "service_id": {
            "description": "The Service ID where the Plan is linked to a Service.",
            "type": "integer",
            "example": 8,
            "minimum": 1,
            "nullable": true
          },
          "event_id": {
            "description": "The Event ID where the Plan is linked to a Event.",
            "type": "integer",
            "example": 8,
            "minimum": 1,
            "nullable": true
          },
          "booking_id": {
            "description": "The Booking ID where the Plan is linked to a Booking.",
            "type": "integer",
            "example": 8,
            "minimum": 1,
            "nullable": true
          },
          "name": {
            "description": "The Plan's name.",
            "type": "string",
            "example": "Gibson's Wedding"
          },
          "date": {
            "description": "Date of the Plan.",
            "type": "string",
            "format": "date",
            "example": "2018-01-01"
          },
          "time": {
            "description": "Time of the Plan.",
            "type": "string",
            "example": "10:30:00"
          },
          "note_categories": {
            "description": "Note categories used for recording specific notes against each Plan Item.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "description": "The UUID",
                  "type": "string",
                  "format": "uuid",
                  "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                  "maxLength": 36,
                  "minLength": 36
                },
                "name": {
                  "description": "The note category name.",
                  "type": "string",
                  "example": "Sound."
                }
              },
              "required": [
                "id",
                "name"
              ],
              "additionalProperties": false
            },
            "nullable": true
          },
          "all_sites": {
            "description": "Whether the Plan belongs to all sites or not.",
            "type": "boolean",
            "example": false
          },
          "site_ids": {
            "description": "List of all site IDs the Plan belongs to.",
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1
            },
            "example": [
              1,
              5,
              10
            ]
          },
          "status": {
            "description": "The current status of the Plan.",
            "type": "string",
            "example": "draft",
            "enum": [
              "draft",
              "published"
            ]
          },
          "created_at": {
            "description": "Date and time the Plan was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Plan.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Plan was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Plan.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "identifier",
          "template_id",
          "service_id",
          "event_id",
          "booking_id",
          "name",
          "date",
          "time",
          "note_categories",
          "all_sites",
          "site_ids",
          "status",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "PlanItem": {
        "description": "A single Plan Item from the Planning module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Plan Item's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "type": {
            "description": "The type of Plan Item.",
            "type": "string",
            "example": "song",
            "enum": [
              "item",
              "song"
            ]
          },
          "name": {
            "description": "The Plan Item's name.",
            "type": "string",
            "example": "Final Blessing"
          },
          "plan_id": {
            "description": "The Plan ID the Plan Item belongs to.",
            "type": "integer",
            "example": 8,
            "minimum": 1
          },
          "type_id": {
            "description": "The Type ID.",
            "type": "integer",
            "example": 19,
            "minimum": 1,
            "nullable": true
          },
          "library_item_id": {
            "description": "The Library Item ID.",
            "type": "integer",
            "example": 19,
            "minimum": 1,
            "nullable": true
          },
          "arrangement_id": {
            "description": "The Arrangement ID where the Plan Item is linked to a Song or null if it is linked to a Library Item.",
            "type": "integer",
            "example": 157,
            "minimum": 1,
            "nullable": true
          },
          "duration": {
            "description": "The default duration of the Plan Item, in seconds.",
            "type": "integer",
            "example": 60,
            "nullable": true
          },
          "time_start": {
            "description": "Start time of the Plan Item.",
            "type": "string",
            "example": "10:30:00"
          },
          "comment": {
            "description": "The Plan Item's comment or null if it is a Song.",
            "type": "string",
            "example": "All serving teams",
            "nullable": true
          },
          "notes": {
            "description": "Notes for this item, organized by note category order.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "note_category_id": {
                  "description": "The UUID of the note category the note belongs to.",
                  "type": "string",
                  "format": "uuid",
                  "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                  "maxLength": 36,
                  "minLength": 36
                },
                "name": {
                  "description": "The note category name.",
                  "type": "string",
                  "example": "Sound."
                },
                "note": {
                  "description": "The note itself.",
                  "type": "string",
                  "example": "Lectern mic"
                }
              },
              "required": [
                "note_category_id",
                "name",
                "note"
              ],
              "additionalProperties": false
            },
            "nullable": true
          },
          "settings": {
            "description": "The item's settings when the item is a Song.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "key": {
                "description": "The key of the Song.",
                "type": "string",
                "example": "G",
                "enum": [
                  "Ab",
                  "A",
                  "A#",
                  "Bb",
                  "B",
                  "C",
                  "C#",
                  "Db",
                  "D",
                  "D#",
                  "Eb",
                  "E",
                  "F",
                  "F#",
                  "Gb",
                  "G",
                  "G#"
                ],
                "nullable": true
              },
              "scale": {
                "description": "The scale of the Song.",
                "type": "string",
                "example": "major",
                "enum": [
                  "major",
                  "minor"
                ]
              },
              "tempo": {
                "description": "The BPM temp of the Song.",
                "type": "integer",
                "example": 76,
                "nullable": true
              },
              "meter": {
                "description": "The meter of the Song.",
                "type": "string",
                "example": "3/4",
                "enum": [
                  "2/2",
                  "2/4",
                  "3/4",
                  "4/4",
                  "5/4",
                  "6/4",
                  "3/8",
                  "6/8",
                  "7/8",
                  "9/8",
                  "12/8"
                ],
                "nullable": true
              }
            },
            "required": [
              "key",
              "scale",
              "tempo",
              "meter"
            ]
          },
          "question_responses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "description": "The Question ID.",
                  "type": "integer",
                  "example": 12,
                  "minimum": 1
                },
                "name": {
                  "description": "The Question's name.",
                  "type": "string",
                  "example": "What Lord's Prayer?"
                },
                "response_type": {
                  "description": "The Question's response type.",
                  "type": "string",
                  "example": "select",
                  "enum": [
                    "bible",
                    "checkboxes",
                    "date",
                    "email",
                    "paragraph",
                    "phone",
                    "radios",
                    "select",
                    "spotify",
                    "text",
                    "video"
                  ]
                },
                "response_options": {
                  "description": "The Question's response options or null if the response does not have response options.",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "example": "Modern"
                  },
                  "nullable": true
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "array",
                      "description": "Selected options for a bible response type.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "book": {
                            "description": "The book of the bible the passage is from, abbreviated to the first three letters.",
                            "type": "string",
                            "example": "JHN",
                            "enum": [
                              "GEN",
                              "EXO",
                              "LEV",
                              "NUM",
                              "DEU",
                              "JOS",
                              "JDG",
                              "RUT",
                              "1SA",
                              "2SA",
                              "1KI",
                              "2KI",
                              "1CH",
                              "2CH",
                              "EZR",
                              "NEH",
                              "EST",
                              "JOB",
                              "PSA",
                              "PRO",
                              "ECC",
                              "SNG",
                              "ISA",
                              "JER",
                              "LAM",
                              "EZK",
                              "DAN",
                              "HOS",
                              "JOL",
                              "AMO",
                              "OBA",
                              "JON",
                              "MIC",
                              "NAM",
                              "HAB",
                              "ZEP",
                              "HAG",
                              "ZEC",
                              "MAL",
                              "MAT",
                              "MRK",
                              "LUK",
                              "JHN",
                              "ACT",
                              "ROM",
                              "1CO",
                              "2CO",
                              "GAL",
                              "EPH",
                              "PHP",
                              "COL",
                              "1TH",
                              "2TH",
                              "1TI",
                              "2TI",
                              "TIT",
                              "PHM",
                              "HEB",
                              "JAS",
                              "1PE",
                              "2PE",
                              "1JN",
                              "2JN",
                              "3JN",
                              "JUD",
                              "REV"
                            ]
                          },
                          "version": {
                            "description": "The abbreviated version of the bible.",
                            "type": "string",
                            "example": "ESV"
                          },
                          "reference": {
                            "description": "The passage reference.",
                            "type": "string",
                            "example": "3:16"
                          }
                        },
                        "required": [
                          "book",
                          "version",
                          "reference"
                        ],
                        "additionalProperties": false
                      }
                    },
                    {
                      "type": "array",
                      "description": "Selected options for a checkboxes response type.",
                      "items": {
                        "type": "string",
                        "example": "Modern"
                      }
                    },
                    {
                      "type": "string",
                      "description": "Value of paragraph, phone, radio, select or text response types.",
                      "example": "Modern"
                    },
                    {
                      "type": "string",
                      "format": "date",
                      "description": "Value of date response type.",
                      "example": "2014-04-25"
                    },
                    {
                      "type": "string",
                      "format": "email",
                      "description": "Value of email response type.",
                      "example": "hello@kingshopechurch.co.uk"
                    },
                    {
                      "type": "object",
                      "description": "Value of a spotify response type.",
                      "properties": {
                        "url": {
                          "description": "The spotify url.",
                          "type": "string",
                          "format": "url",
                          "example": "https://open.spotify.com/track/47xHJQGerfD3QjcnsAuw3N",
                          "nullable": true
                        },
                        "name": {
                          "description": "The name of the song.",
                          "type": "string",
                          "example": "Come Now is the Time to Worship",
                          "nullable": true
                        },
                        "album_name": {
                          "description": "The name of the album the song belongs to.",
                          "type": "string",
                          "example": "It's Time",
                          "nullable": true
                        },
                        "identifier": {
                          "description": "The spotify identifier.",
                          "type": "string",
                          "example": "47xHJQGerfD3QjcnsAuw3N",
                          "nullable": true
                        },
                        "image_urls": {
                          "type": "object",
                          "additionalProperties": false,
                          "properties": {
                            "sm": {
                              "description": "The small resolution image url.",
                              "type": "string",
                              "format": "url",
                              "example": "https://i.scdn.co/image/ab67616d00004851c586bce112747b06991a85a3",
                              "nullable": true
                            },
                            "md": {
                              "description": "The medium resolution image url.",
                              "type": "string",
                              "format": "url",
                              "example": "https://i.scdn.co/image/ab67616d00004851c586bce112747b06991a85a3",
                              "nullable": true
                            },
                            "lg": {
                              "description": "The large resolution image url.",
                              "type": "string",
                              "format": "url",
                              "example": "https://i.scdn.co/image/ab67616d00004851c586bce112747b06991a85a3",
                              "nullable": true
                            }
                          },
                          "required": [
                            "sm",
                            "md",
                            "lg"
                          ]
                        },
                        "artist_names": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "description": "The name of the artist.",
                            "example": "Brian Doerksen"
                          },
                          "nullable": true
                        }
                      },
                      "required": [
                        "url",
                        "name",
                        "album_name",
                        "identifier",
                        "image_urls",
                        "artist_names"
                      ],
                      "additionalProperties": false,
                      "nullable": true
                    },
                    {
                      "type": "string",
                      "format": "url",
                      "description": "Value of a video response type.",
                      "example": "https://youtu.be/i6guWKnmxYU"
                    }
                  ]
                },
                "order": {
                  "description": "The positional order of the Question.",
                  "type": "integer",
                  "example": 2
                },
                "hidden": {
                  "description": "Whether the Question is hidden or not.",
                  "type": "boolean",
                  "example": false
                }
              },
              "required": [
                "id",
                "name",
                "response_type",
                "response_options",
                "value",
                "order",
                "hidden"
              ],
              "additionalProperties": false
            },
            "nullable": true
          },
          "people": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "The people linked with the Plan Item.",
              "properties": {
                "resource_id": {
                  "description": "This property should no longer be used, please use \"id\" instead.",
                  "type": "integer",
                  "example": 2,
                  "deprecated": true
                },
                "resource_type": {
                  "description": "This property should no longer be used, please use \"type\" instead..",
                  "type": "string",
                  "example": "addressbook_contact",
                  "enum": [
                    "addressbook_contact",
                    "children_child"
                  ],
                  "deprecated": true
                },
                "first_name": {
                  "description": "The first name of the person.",
                  "type": "string",
                  "example": "Mel"
                },
                "last_name": {
                  "description": "The last name of the person.",
                  "type": "string",
                  "example": "Wright"
                },
                "type": {
                  "description": "The person's type, indicating whether they are a Contact or Child.",
                  "type": "string",
                  "example": "addressbook_contact",
                  "enum": [
                    "addressbook_contact",
                    "children_child"
                  ]
                },
                "id": {
                  "description": "The Contact or Child's ID.",
                  "type": "integer",
                  "example": 12,
                  "minimum": 1
                }
              },
              "required": [
                "resource_id",
                "resource_type",
                "first_name",
                "last_name",
                "type",
                "id"
              ],
              "additionalProperties": false
            },
            "nullable": true
          },
          "order": {
            "description": "The positional order of the Plan Item.",
            "type": "integer",
            "example": 12
          },
          "created_at": {
            "description": "Date and time the Plan Item was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Plan Item.",
            "type": "string",
            "example": "kelly",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Plan Item was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Plan Item.",
            "type": "string",
            "example": "simon",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "type",
          "name",
          "plan_id",
          "type_id",
          "library_item_id",
          "arrangement_id",
          "duration",
          "time_start",
          "comment",
          "notes",
          "settings",
          "question_responses",
          "people",
          "order",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Song": {
        "description": "A single Song from the Planning module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Song's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The name of the Song.",
            "type": "string",
            "example": "O Holy Night"
          },
          "ccli": {
            "description": "The CCLI number of the Song.",
            "type": "integer",
            "example": 123586,
            "nullable": true
          },
          "copyright": {
            "description": "The copyright information for the Song.",
            "type": "string",
            "example": "2013 Thankyou Music"
          },
          "administration": {
            "description": "The administration information for the Song.",
            "type": "string",
            "example": "Integrity Music"
          },
          "status": {
            "description": "The current status of the Song.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "archived_at": {
            "description": "Date and time the Song was archived.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Song was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z"
          },
          "created_by": {
            "description": "The user who created the Song.",
            "type": "string",
            "example": "kelly"
          },
          "created_source": {
            "description": "The source of the Song.",
            "type": "string",
            "example": "churchsuite"
          },
          "modified_at": {
            "description": "Date and time the Song was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z"
          },
          "modified_by": {
            "description": "The user who last modified the Song.",
            "type": "string",
            "example": "simon"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "ccli",
          "copyright",
          "administration",
          "status",
          "archived_at",
          "created_at",
          "created_by",
          "created_source",
          "modified_at",
          "modified_by"
        ]
      },
      "SongArrangement": {
        "description": "A single Song Arrangement from the Planning module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Song Arrangement's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "song_id": {
            "description": "The Song Arrangement's Song ID.",
            "type": "integer",
            "example": 169,
            "minimum": 1
          },
          "name": {
            "description": "The Song Arrangement's name, if the Song Arrangement has no name, this will be the name of the Song it is linked to.",
            "type": "string",
            "example": "Abide With Me"
          },
          "artist": {
            "description": "The Song Arrangement's artist.",
            "type": "string",
            "example": "Henry Francis Lyte",
            "nullable": true
          },
          "key": {
            "description": "The key of the Song Arrangement.",
            "type": "string",
            "example": "G",
            "enum": [
              "Ab",
              "A",
              "A#",
              "Bb",
              "B",
              "C",
              "C#",
              "Db",
              "D",
              "D#",
              "Eb",
              "E",
              "F",
              "F#",
              "Gb",
              "G",
              "G#"
            ],
            "nullable": true
          },
          "tempo": {
            "description": "The BPM tempo of the Song Arrangement.",
            "type": "integer",
            "example": 76,
            "nullable": true
          },
          "meter": {
            "description": "The meter of the Song Arrangement.",
            "type": "string",
            "example": "3/4",
            "enum": [
              "2/2",
              "2/4",
              "3/2",
              "3/4",
              "4/2",
              "4/4",
              "5/4",
              "6/4",
              "3/8",
              "6/8",
              "7/4",
              "7/8",
              "9/8",
              "12/4",
              "12/8"
            ],
            "nullable": true
          },
          "scale": {
            "description": "The scale of the Song Arrangement.",
            "type": "string",
            "example": "major",
            "enum": [
              "major",
              "minor"
            ],
            "nullable": true
          },
          "duration": {
            "description": "The default duration of the Song Arrangement, in seconds.",
            "type": "integer",
            "example": 60,
            "nullable": true
          },
          "chart": {
            "description": "The chords or lyrics of the Song Arrangement.",
            "type": "string",
            "example": "VERSE 1:\r\n[Eb]A - [Bb]bide with [Cm]me; [Eb/G]fast     [Ab]falls the [Bb]even - [Eb]tide\r\n[Eb]The darkness [Ab]deep - [Eb/G]ens;     [Fm7]Lord with [F7]me a - [Bb]bide\r\n[Eb]When [B]bother [Cm]help - [Eb/G]ers     [Ab]fail and [C7]comforts [Fm]flee\r\n[Bb/Ab]Help of the [Eb/G]helpless, [Ab]O a - [Eb/Bb]bide [Bb7]with [Eb]me",
            "nullable": true
          },
          "spotify": {
            "description": "The Spotify track linked to the Song Arrangement.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "url": {
                "description": "The spotify url.",
                "type": "string",
                "format": "url",
                "example": "https://open.spotify.com/track/47xHJQGerfD3QjcnsAuw3N",
                "nullable": true
              },
              "name": {
                "description": "The name of the song.",
                "type": "string",
                "example": "Come Now is the Time to Worship",
                "nullable": true
              },
              "album_name": {
                "description": "The name of the album the song belongs to.",
                "type": "string",
                "example": "It's Time",
                "nullable": true
              },
              "identifier": {
                "description": "The spotify identifier.",
                "type": "string",
                "example": "47xHJQGerfD3QjcnsAuw3N",
                "nullable": true
              },
              "image_urls": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "sm": {
                    "description": "The small resolution image url.",
                    "type": "string",
                    "format": "url",
                    "example": "https://i.scdn.co/image/ab67616d00004851c586bce112747b06991a85a3",
                    "nullable": true
                  },
                  "md": {
                    "description": "The medium resolution image url.",
                    "type": "string",
                    "format": "url",
                    "example": "https://i.scdn.co/image/ab67616d00004851c586bce112747b06991a85a3",
                    "nullable": true
                  },
                  "lg": {
                    "description": "The large resolution image url.",
                    "type": "string",
                    "format": "url",
                    "example": "https://i.scdn.co/image/ab67616d00004851c586bce112747b06991a85a3",
                    "nullable": true
                  }
                },
                "required": [
                  "sm",
                  "md",
                  "lg"
                ]
              },
              "artist_names": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "The name of the artist.",
                  "example": "Brian Doerksen"
                },
                "nullable": true
              }
            },
            "required": [
              "url",
              "name",
              "album_name",
              "identifier",
              "image_urls",
              "artist_names"
            ]
          },
          "links": {
            "description": "links to any supporting resources for the Song Arrangement.",
            "type": "array",
            "items": {
              "type": "string",
              "format": "url"
            },
            "example": [
              "https://example.com/video.mp4",
              "https://example.com/audio.mp3"
            ]
          },
          "created_at": {
            "description": "Date and time the Song Arrangement was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Song Arrangement.",
            "type": "string",
            "example": "kelly",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Song Arrangement was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Song Arrangement.",
            "type": "string",
            "example": "simon",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "song_id",
          "name",
          "artist",
          "key",
          "tempo",
          "meter",
          "scale",
          "duration",
          "chart",
          "spotify",
          "links",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Template": {
        "description": "A single Template from the Planning module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Template's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The Template's name.",
            "type": "string",
            "example": "Gibson's Wedding"
          },
          "time": {
            "description": "The start time of the Template.",
            "type": "string",
            "example": "10:30:00"
          },
          "note_categories": {
            "description": "Note categories used for recording specific notes against each Template Item.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "description": "The UUID",
                  "type": "string",
                  "format": "uuid",
                  "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                  "maxLength": 36,
                  "minLength": 36
                },
                "name": {
                  "description": "The note category name.",
                  "type": "string",
                  "example": "Sound."
                }
              },
              "required": [
                "id",
                "name"
              ],
              "additionalProperties": false
            },
            "nullable": true
          },
          "status": {
            "description": "The current status of the Template.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "archived_at": {
            "description": "Date and time the Template was archived.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Template was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Template.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Template was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Template.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "time",
          "note_categories",
          "status",
          "archived_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "TemplateItem": {
        "description": "A single Template Item from the Planning module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Template Item's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "type": {
            "description": "The type of Template Item.",
            "type": "string",
            "example": "song",
            "enum": [
              "item",
              "song"
            ]
          },
          "name": {
            "description": "The Template Item's name.",
            "type": "string",
            "example": "Final Blessing"
          },
          "template_id": {
            "description": "The Template ID the Template Item belongs to.",
            "type": "integer",
            "example": 8,
            "minimum": 1
          },
          "type_id": {
            "description": "The Type ID.",
            "type": "integer",
            "example": 19,
            "minimum": 1,
            "nullable": true
          },
          "library_item_id": {
            "description": "The Library Item ID.",
            "type": "integer",
            "example": 19,
            "minimum": 1,
            "nullable": true
          },
          "arrangement_id": {
            "description": "The Arrangement ID where the Template Item is linked to a Song or null if it is linked to a Library Item.",
            "type": "integer",
            "example": 157,
            "minimum": 1,
            "nullable": true
          },
          "duration": {
            "description": "The default duration of the Template Item, in seconds.",
            "type": "integer",
            "example": 60,
            "nullable": true
          },
          "time_start": {
            "description": "Start time of the Template Item.",
            "type": "string",
            "example": "10:30:00"
          },
          "comment": {
            "description": "The Template Item's comment or null if it is a Song.",
            "type": "string",
            "example": "All serving teams",
            "nullable": true
          },
          "notes": {
            "$ref": "#/components/schemas/PlanItem/properties/notes"
          },
          "settings": {
            "$ref": "#/components/schemas/PlanItem/properties/settings"
          },
          "question_responses": {
            "$ref": "#/components/schemas/PlanItem/properties/question_responses"
          },
          "people": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "The people linked with the Template Item.",
              "properties": {
                "resource_id": {
                  "description": "This property should no longer be used, please use \"id\" instead.",
                  "type": "integer",
                  "example": 2,
                  "deprecated": true
                },
                "resource_type": {
                  "description": "This property should no longer be used, please use \"type\" instead.",
                  "type": "string",
                  "example": "addressbook_contact",
                  "enum": [
                    "addressbook_contact",
                    "children_child"
                  ],
                  "deprecated": true
                },
                "first_name": {
                  "description": "The first name of the person.",
                  "type": "string",
                  "example": "Mel"
                },
                "last_name": {
                  "description": "The last name of the person.",
                  "type": "string",
                  "example": "Wright"
                },
                "type": {
                  "description": "The person's type, indicating whether they are a Contact or Child.",
                  "type": "string",
                  "example": "addressbook_contact",
                  "enum": [
                    "addressbook_contact",
                    "children_child"
                  ]
                },
                "id": {
                  "description": "The Contact or Child's ID.",
                  "type": "integer",
                  "example": 12,
                  "minimum": 1
                }
              },
              "required": [
                "resource_id",
                "resource_type",
                "first_name",
                "last_name",
                "type",
                "id"
              ],
              "additionalProperties": false
            },
            "nullable": true
          },
          "order": {
            "description": "The positional order of the Template Item.",
            "type": "integer",
            "example": 12
          },
          "created_at": {
            "description": "Date and time the Template Item was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Template Item.",
            "type": "string",
            "example": "kelly",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Template Item was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Template Item.",
            "type": "string",
            "example": "simon",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "type",
          "name",
          "template_id",
          "type_id",
          "library_item_id",
          "arrangement_id",
          "duration",
          "time_start",
          "comment",
          "notes",
          "settings",
          "question_responses",
          "people",
          "order",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Type1": {
        "description": "A single Type from the Planning module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Type's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The Type's name.",
            "type": "string",
            "example": "Prayers"
          },
          "color": {
            "description": "The Type's hexadecimal colour value.",
            "type": "string",
            "example": "#ab12cd"
          },
          "duration": {
            "description": "The default duration of any Library Items of this Type, in seconds.",
            "type": "integer",
            "example": 60,
            "nullable": true
          },
          "ccli_tracking": {
            "description": "Adds a CCLI number field to any Library Items of this type for easy reporting.",
            "type": "boolean",
            "example": true
          },
          "order": {
            "description": "The position of the Type when ordered.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "created_at": {
            "description": "Date and time the Type was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Type.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Type was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Type.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "color",
          "duration",
          "ccli_tracking",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Member1": {
        "description": "A single Ministry Member from the Rotas module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Member's ID.",
            "type": "integer",
            "example": 109,
            "minimum": 1
          },
          "ministry_id": {
            "description": "The ID of the Ministry this Member belongs to.",
            "type": "integer",
            "example": 10,
            "minimum": 1
          },
          "team_id": {
            "description": "The ID of the Ministry Team this Member belongs to.",
            "type": "integer",
            "example": 109,
            "minimum": 1
          },
          "person": {
            "description": "The Person who is a member of a Ministry.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "description": "The Person's type, indicating whether they are a Child or Contact.",
                "type": "string",
                "example": "addressbook_contact",
                "enum": [
                  "addressbook_contact",
                  "children_child"
                ]
              },
              "id": {
                "description": "The Person's ID.",
                "type": "integer",
                "example": 12,
                "minimum": 1
              }
            },
            "required": [
              "type",
              "id"
            ]
          },
          "role_ids": {
            "description": "List of all role IDs that have been added to this Member.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              2,
              7,
              16
            ]
          },
          "created_at": {
            "description": "Date and time the Member was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Member.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Member was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Member.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "ministry_id",
          "team_id",
          "person",
          "role_ids",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Ministry": {
        "description": "A single Ministry from the Rotas module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Ministry's ID.",
            "type": "integer",
            "example": 109,
            "minimum": 1
          },
          "name": {
            "description": "The Ministry's name.",
            "type": "string",
            "example": "Production"
          },
          "description": {
            "description": "The Ministry's description.",
            "type": "string",
            "example": "Whether working on the Stage, the Story, or the Stream, the Production Team help to create a great worship environment at Sunday gatherings."
          },
          "days": {
            "description": "List of days the Ministry serves on.",
            "type": "array",
            "items": {
              "type": "string",
              "description": "The day the Ministry meets at.",
              "example": "wednesday",
              "enum": [
                "monday",
                "tuesday",
                "wednesday",
                "thursday",
                "friday",
                "saturday",
                "sunday"
              ]
            },
            "example": [
              "saturday",
              "sunday"
            ]
          },
          "starts_at": {
            "description": "The time when the Ministry starts serving.",
            "type": "string",
            "example": "09:30",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
          },
          "ends_at": {
            "description": "The time when the Ministry finishes serving.",
            "type": "string",
            "example": "10:30",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
          },
          "rota_type": {
            "description": "The type of Rota and team rotation that should be used.",
            "type": "string",
            "example": "adhoc",
            "enum": [
              "adhoc",
              "serve13",
              "simple"
            ]
          },
          "rotation_type": {
            "description": "How often an AdHoc or Simple Rotation Rota created for this Ministry should serve, or null for Serve13.",
            "type": "string",
            "example": "weekly",
            "enum": [
              "weekly",
              "fortnightly",
              "three_weekly",
              "four_weekly",
              "monthly_first_week",
              "monthly_second_week",
              "monthly_third_week",
              "monthly_fourth_week"
            ],
            "nullable": true
          },
          "status": {
            "description": "The status of the Ministry.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "archived"
            ]
          },
          "image": {
            "description": "A collection of different sized variations of an Image.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "thumbnail": {
                "description": "The thumbnail Image url. Thumbnail images are 128x128px.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_thumb.jpg"
              },
              "small": {
                "description": "The small resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_sm.jpg"
              },
              "medium": {
                "description": "The medium resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_md.jpg"
              },
              "large": {
                "description": "The large resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_lg.jpg"
              },
              "uploaded_at": {
                "description": "Date and time the Image was uploaded at.",
                "type": "string",
                "format": "date-time",
                "example": "2014-04-25T10:10:32Z",
                "nullable": true
              }
            },
            "required": [
              "thumbnail",
              "small",
              "medium",
              "large",
              "uploaded_at"
            ]
          },
          "site_ids": {
            "description": "The Ministry's site ID returned in a single item array.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              1
            ],
            "maxItems": 1,
            "minItems": 1
          },
          "archived_at": {
            "description": "Date and time an archived Ministry was archived.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_at": {
            "description": "Date and time the Ministry was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z"
          },
          "created_by": {
            "description": "The user who created the Ministry.",
            "type": "string",
            "example": "neil"
          },
          "modified_at": {
            "description": "Date and time the Ministry was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z"
          },
          "modified_by": {
            "description": "The user who last modified the Ministry.",
            "type": "string",
            "example": "anthony"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "description",
          "days",
          "starts_at",
          "ends_at",
          "rota_type",
          "rotation_type",
          "status",
          "image",
          "site_ids",
          "archived_at",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Role1": {
        "description": "A single Role from the Rotas module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Role's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The name of the Role.",
            "type": "string",
            "example": "Worship Leader"
          },
          "created_at": {
            "description": "Date and time the Role was created.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Role.",
            "type": "string",
            "example": "kusi",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Role was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Role.",
            "type": "string",
            "example": "lydia",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Team": {
        "description": "A single Ministry Team from the Rotas module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Team's ID.",
            "type": "integer",
            "example": 109,
            "minimum": 1
          },
          "ministry_id": {
            "description": "The ID of the Ministry this Team belongs to.",
            "type": "integer",
            "example": 109,
            "minimum": 1
          },
          "name": {
            "description": "The Team's name.",
            "type": "string",
            "example": "Production"
          },
          "order": {
            "description": "Order the Team appears.",
            "type": "integer",
            "example": 1
          },
          "created_at": {
            "description": "Date and time the Team was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Team.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Team was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Team.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "ministry_id",
          "name",
          "order",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "AttendanceDate": {
        "description": "A single Attendance record from the Small Groups module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The ID of the Attendance record.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "group_id": {
            "description": "The ID of the Small Group this Attendance record relates to.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "date": {
            "description": "The date of this Small Group meeting.",
            "type": "string",
            "format": "date",
            "example": "1957-04-27"
          },
          "details": {
            "description": "Details of who attended this Small Group meeting, or null if the group didn't meet.",
            "type": "object",
            "nullable": true,
            "properties": {
              "num_members": {
                "description": "The number of Group members that belong to the Group.",
                "type": "integer",
                "example": 12,
                "minimum": 0
              },
              "num_attendees": {
                "description": "The number of people who attended.",
                "type": "integer",
                "example": 12,
                "minimum": 0
              },
              "contact_ids": {
                "description": "The IDs of contacts who attended.",
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 1
                },
                "example": [
                  2,
                  7,
                  6
                ]
              },
              "child_ids": {
                "description": "The IDs of children who attended.",
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 1
                },
                "example": [
                  2,
                  7,
                  6
                ]
              }
            },
            "required": [
              "num_members",
              "num_attendees",
              "contact_ids",
              "child_ids"
            ]
          },
          "notes": {
            "description": "The Attendance record's notes",
            "type": "string",
            "example": "Met for prayer"
          },
          "created_at": {
            "description": "Date and time the Attendance record was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Attendance record.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Attendance record was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Attendance record.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "required": [
          "group_id",
          "date",
          "details",
          "notes",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "ClusterWrite": {
        "type": "object",
        "properties": {
          "name": {
            "description": "The Cluster's name.",
            "type": "string",
            "example": "Derby",
            "maxLength": 50,
            "minLength": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "name"
        ]
      },
      "Cluster": {
        "description": "A single Cluster from the Small Groups module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Cluster's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The Cluster's name.",
            "type": "string",
            "example": "Derby"
          },
          "created_at": {
            "description": "Date and time the Cluster was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Cluster.",
            "type": "string",
            "example": "ben",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Cluster was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Cluster.",
            "type": "string",
            "example": "jasmin",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Group1": {
        "description": "A single Group from the Small Groups module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Group's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "identifier": {
            "description": "The unique identifier for the Group.",
            "type": "string",
            "example": "gi8fj4sj"
          },
          "name": {
            "description": "The Group's name.",
            "type": "string",
            "example": "Wednesday Women"
          },
          "cluster_id": {
            "description": "The Group's Cluster ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1,
            "nullable": true
          },
          "starts_at": {
            "description": "The date the Group starts.",
            "type": "string",
            "format": "date",
            "example": "2018-01-01"
          },
          "ends_at": {
            "description": "The date the Group ends.",
            "type": "string",
            "format": "date",
            "example": "2014-02-01",
            "nullable": true
          },
          "frequency": {
            "description": "The frequency the Group meets up.",
            "type": "string",
            "example": "weekly"
          },
          "day": {
            "description": "The day the Group meets at.",
            "type": "string",
            "example": "wednesday",
            "enum": [
              "monday",
              "tuesday",
              "wednesday",
              "thursday",
              "friday",
              "saturday",
              "sunday",
              "various days"
            ],
            "nullable": true
          },
          "time": {
            "description": "The time the Group meets at.",
            "type": "string",
            "example": "10:10",
            "nullable": true
          },
          "location": {
            "description": "The location of the Event or Group, whether in-person or online.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "name": {
                "description": "The name of the location.",
                "type": "string",
                "example": "Zoom"
              },
              "type": {
                "description": "Whether the Event or Group is online or at a physical location.",
                "type": "string",
                "example": "online",
                "enum": [
                  "online",
                  "physical"
                ]
              },
              "address": {
                "description": "The location address.",
                "type": "string",
                "example": "NG1 1PR",
                "nullable": true
              },
              "latitude": {
                "description": "The latitude of the address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": 52.952089,
                "nullable": true
              },
              "longitude": {
                "description": "The longitude of the address, to 6 decimal places",
                "type": "number",
                "format": "float",
                "example": -1.1448,
                "nullable": true
              },
              "url": {
                "description": "The url of the online location.",
                "type": "string",
                "example": "https:zoom.us/123456789",
                "nullable": true
              }
            },
            "required": [
              "name",
              "type",
              "address",
              "latitude",
              "longitude",
              "url"
            ]
          },
          "description": {
            "description": "The description of the Group.",
            "type": "string",
            "example": "Learning to apply the bible in our everyday."
          },
          "visibility": {
            "description": "Group visibility settings",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "my": {
                "description": "Whether the Group is visible in My ChurchSuite at all.",
                "type": "boolean",
                "example": true
              },
              "embed": {
                "description": "Whether the Group is visible in Embed.",
                "type": "boolean",
                "example": true
              },
              "connect": {
                "description": "Whether the Group is visible in Connect.",
                "type": "boolean",
                "example": true
              },
              "members": {
                "description": "Whether Group member can view the other members before sign-up ends.",
                "type": "boolean",
                "example": true
              }
            },
            "required": [
              "my",
              "embed",
              "connect",
              "members"
            ]
          },
          "signup_options": {
            "description": "Sign-up options for the Group, or null if sign-up is not enabled.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "capacity": {
                "description": "The maximum number of people who can sign up for the Group.",
                "type": "integer",
                "example": 200,
                "nullable": true
              },
              "my_signup": {
                "description": "Whether this Group can be signed up to in My.",
                "type": "boolean",
                "example": true
              },
              "embed_signup": {
                "description": "Whether this Group can be signed up to in Embed/Connect.",
                "type": "boolean",
                "example": true
              },
              "starts_at": {
                "description": "The date the Group sign-up starts.",
                "type": "string",
                "format": "date",
                "example": "2018-01-01"
              },
              "ends_at": {
                "description": "The date the Group sign-up ends.",
                "type": "string",
                "format": "date",
                "example": "2014-02-01",
                "nullable": true
              },
              "default_status": {
                "description": "The default status of a sign-up member on completion.",
                "type": "string",
                "example": "pending",
                "enum": [
                  "active",
                  "pending"
                ]
              },
              "confirmation_email": {
                "description": "Confirmation email details.",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "sender_email": {
                    "description": "The sender's email address for the confirmation email.",
                    "type": "string",
                    "format": "email",
                    "example": "admin@kingshopechurch.co.uk"
                  },
                  "sender_name": {
                    "description": "The sender's name for the confirmation email.",
                    "type": "string",
                    "example": "Kings Hope Booking"
                  },
                  "subject": {
                    "description": "The subject for the confirmation email.",
                    "type": "string",
                    "example": "You're booked!"
                  },
                  "body": {
                    "description": "The html body for the confirmation email.",
                    "type": "string",
                    "example": "<div>Dear ::first_name::,</div> <div>&nbsp;</div> <div>Here are your details!</div>"
                  }
                },
                "required": [
                  "sender_email",
                  "sender_name",
                  "subject",
                  "body"
                ]
              }
            },
            "required": [
              "capacity",
              "my_signup",
              "embed_signup",
              "starts_at",
              "ends_at",
              "default_status",
              "confirmation_email"
            ]
          },
          "custom_fields": {
            "description": "Custom Field responses for this resource",
            "type": "array",
            "items": {
              "type": "object",
              "description": "Custom Field responses for this resource",
              "properties": {
                "id": {
                  "description": "The ID of the Custom Field",
                  "type": "integer",
                  "example": 1
                },
                "field_type": {
                  "description": "A discriminator to determine the type of Custom Field this response belongs to.",
                  "type": "string",
                  "example": "text",
                  "enum": [
                    "checkbox",
                    "date",
                    "email",
                    "phone",
                    "radio",
                    "select",
                    "text",
                    "textarea"
                  ]
                },
                "value": {
                  "nullable": true,
                  "oneOf": [
                    {
                      "type": "string",
                      "description": "The raw value of a text, textarea, email, phone or date.",
                      "example": "support@churchsuite.com"
                    },
                    {
                      "type": "object",
                      "description": "The UUID of the selected response for a radio or select field.",
                      "example": {
                        "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                      },
                      "properties": {
                        "id": {
                          "description": "The UUID",
                          "type": "string",
                          "format": "uuid",
                          "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                          "maxLength": 36,
                          "minLength": 36
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "array",
                      "description": "An array of objects which contains the UUIDs of the selected responses for a checkbox field. If no checkboxes are selected an empty array will be returned.",
                      "items": {
                        "type": "object",
                        "description": "The UUID of the selected response for a radio or select field.",
                        "example": {
                          "id": "ffbfc9fd-4579-4370-9783-2e4390cd0e30"
                        },
                        "properties": {
                          "id": {
                            "description": "The UUID",
                            "type": "string",
                            "format": "uuid",
                            "example": "ffbfc9fd-4579-4370-9783-2e4390cd0e30",
                            "maxLength": 36,
                            "minLength": 36
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false
                      }
                    }
                  ]
                }
              },
              "required": [
                "id",
                "value",
                "field_type"
              ],
              "additionalProperties": false
            }
          },
          "image": {
            "description": "A collection of different sized variations of an Image.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "thumbnail": {
                "description": "The thumbnail Image url. Thumbnail images are 128x128px.",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_thumb.jpg"
              },
              "small": {
                "description": "The small resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_sm.jpg"
              },
              "medium": {
                "description": "The medium resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_md.jpg"
              },
              "large": {
                "description": "The large resolution Image url",
                "type": "string",
                "format": "url",
                "example": "https://cdn.churchsuite.com/abcdefgh/smallgroups/groups/x_lg.jpg"
              },
              "uploaded_at": {
                "description": "Date and time the Image was uploaded at.",
                "type": "string",
                "format": "date-time",
                "example": "2014-04-25T10:10:32Z",
                "nullable": true
              }
            },
            "required": [
              "thumbnail",
              "small",
              "medium",
              "large",
              "uploaded_at"
            ]
          },
          "all_sites": {
            "description": "Whether the Group belongs to all sites or not.",
            "type": "boolean",
            "example": false
          },
          "site_ids": {
            "description": "List of all site IDs the Group belongs to.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              2,
              7,
              16
            ]
          },
          "created_at": {
            "description": "Date and time the Group was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Group.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Group was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Group.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "identifier",
          "name",
          "cluster_id",
          "starts_at",
          "ends_at",
          "frequency",
          "day",
          "time",
          "location",
          "description",
          "visibility",
          "signup_options",
          "custom_fields",
          "image",
          "all_sites",
          "site_ids",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "Member2": {
        "description": "A single Member from the Small Groups module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Member's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "group_id": {
            "description": "The Members's Group ID.",
            "type": "integer",
            "example": 46,
            "minimum": 1
          },
          "person": {
            "description": "The Members's Person details.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "description": "The Person's type, indicating whether they are a Child or Contact.",
                "type": "string",
                "example": "addressbook_contact",
                "enum": [
                  "children_child",
                  "addressbook_contact"
                ]
              },
              "id": {
                "description": "The Contact or Child's ID.",
                "type": "integer",
                "example": 12,
                "minimum": 1
              }
            },
            "required": [
              "type",
              "id"
            ]
          },
          "contact_id": {
            "description": "This is no longer recommended - please user `person` to get the Member's contact details. The Member's Contact ID.",
            "type": "integer",
            "example": 1215,
            "deprecated": true,
            "minimum": 1,
            "nullable": true
          },
          "child_id": {
            "description": "This is no longer recommended - please user `person` to get the Member's contact details. The Members's Child ID.",
            "type": "integer",
            "example": 934,
            "deprecated": true,
            "minimum": 1,
            "nullable": true
          },
          "status": {
            "description": "Current status of the Member.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "pending"
            ]
          },
          "privacy": {
            "description": "The Member's privacy settings.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "telephone_visible": {
                "description": "Whether the Member's telephone should be visible in My.",
                "type": "boolean",
                "example": true
              },
              "mobile_visible": {
                "description": "Whether the Member's mobile should be visible in My.",
                "type": "boolean",
                "example": false
              },
              "email_visible": {
                "description": "Whether the Member's email should be visible in My.",
                "type": "boolean",
                "example": false
              }
            },
            "required": [
              "telephone_visible",
              "mobile_visible",
              "email_visible"
            ]
          },
          "role_ids": {
            "description": "List of all role IDs that have been added to this Member.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              2,
              7,
              16
            ]
          },
          "joined_date": {
            "description": "Date on which the Member joined the group.",
            "type": "string",
            "format": "date",
            "example": "2025-01-01"
          },
          "created_at": {
            "description": "Date and time the Member was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Member.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Member was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Member.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "group_id",
          "person",
          "contact_id",
          "child_id",
          "status",
          "privacy",
          "role_ids",
          "joined_date",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "MemberAdd": {
        "type": "object",
        "properties": {
          "group_id": {
            "description": "The group ID the Member is being added to.",
            "type": "integer",
            "example": 21,
            "minimum": 1
          },
          "person": {
            "description": "The Members's person details.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "description": "The person's type, indicating whether they are a Child or Contact.",
                "type": "string",
                "example": "addressbook_contact",
                "enum": [
                  "children_child",
                  "addressbook_contact"
                ]
              },
              "id": {
                "description": "The Contact or Child's ID.",
                "type": "integer",
                "example": 12,
                "minimum": 1
              }
            },
            "required": [
              "type",
              "id"
            ]
          },
          "role_ids": {
            "description": "List of role_ids for any roles being assigned to the Member.",
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1
            },
            "example": [
              2,
              3
            ]
          },
          "joined_date": {
            "description": "Date the Member joined the group.",
            "type": "string",
            "format": "date",
            "example": "2025-02-15"
          },
          "status": {
            "description": "The status of the Member.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "pending"
            ]
          },
          "privacy": {
            "description": "The Member's privacy settings.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "use_defaults": {
                "description": "Use the Member's default privacy settings. If this is false `telephone_visible`, `mobile_visible` and `email_visible` must be set.",
                "type": "boolean",
                "example": false
              },
              "telephone_visible": {
                "description": "Telephone is visible.",
                "type": "boolean",
                "example": false
              },
              "mobile_visible": {
                "description": "Mobile is visible.",
                "type": "boolean",
                "example": false
              },
              "email_visible": {
                "description": "Email is visible.",
                "type": "boolean",
                "example": true
              }
            },
            "required": [
              "use_defaults"
            ]
          },
          "send_email_confirmation": {
            "description": "Send the sign-up confirmation email to the Member you are adding and a sign-up notification to any existing members with the appropriate role.",
            "type": "boolean",
            "example": false,
            "default": false
          },
          "override_capacity": {
            "description": "Override the capacity of the group if adding the Member will take the group over capacity.",
            "type": "boolean",
            "example": false,
            "default": false
          }
        },
        "required": [
          "group_id",
          "person",
          "joined_date",
          "status",
          "privacy"
        ]
      },
      "MemberEdit": {
        "description": "Edit a Member in the Small Groups module.",
        "type": "object",
        "properties": {
          "role_ids": {
            "description": "List of role_ids for any Roles being assigned to the Member.",
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1
            },
            "example": [
              2,
              3
            ]
          },
          "joined_date": {
            "description": "Date the Member joined the group.",
            "type": "string",
            "format": "date",
            "example": "2025-02-15"
          },
          "status": {
            "description": "The current status of the Member.",
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "pending"
            ]
          },
          "privacy": {
            "description": "The Member's privacy settings.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "use_defaults": {
                "description": "Use the Member's default privacy settings. If this is false `telephone_visible`, `mobile_visible` and `email_visible` must be set.",
                "type": "boolean",
                "example": false
              },
              "telephone_visible": {
                "description": "Telephone is visible.",
                "type": "boolean",
                "example": false
              },
              "mobile_visible": {
                "description": "Mobile is visible.",
                "type": "boolean",
                "example": false
              },
              "email_visible": {
                "description": "Email is visible.",
                "type": "boolean",
                "example": true
              }
            },
            "required": [
              "use_defaults"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "role_ids",
          "joined_date",
          "status",
          "privacy"
        ]
      },
      "Note4": {
        "description": "A single Note, as found in multiple modules.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The ID of the Note.",
            "type": "integer",
            "example": 1,
            "minimum": 1,
            "readOnly": true
          },
          "content": {
            "description": "The content of the Note.",
            "example": "Had a conversation about this on 12th of July.",
            "type": "string"
          },
          "pinned": {
            "description": "Whether the Note has been pinned.",
            "type": "boolean",
            "example": true
          },
          "visible_to": {
            "description": "Who the resource is visible to, or null if there are no restrictions.",
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "properties": {
              "just_me": {
                "description": "Whether the resource is visible to just the current user or not.",
                "type": "boolean",
                "example": false
              },
              "user_group_ids": {
                "description": "List of user group IDs the resource is visible to.",
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 1
                },
                "example": [
                  1,
                  5,
                  10
                ]
              }
            },
            "required": [
              "just_me",
              "user_group_ids"
            ]
          },
          "created_at": {
            "description": "Date and time the Note was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true,
            "readOnly": true
          },
          "created_by": {
            "description": "The user that created the Note.",
            "type": "string",
            "example": "neil",
            "nullable": true,
            "readOnly": true
          },
          "modified_at": {
            "description": "Date and time the Note was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true,
            "readOnly": true
          },
          "modified_by": {
            "description": "The user that last modified the Note.",
            "type": "string",
            "example": "anthony",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "content",
          "pinned",
          "visible_to",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      },
      "NoteAdd4": {
        "type": "object",
        "properties": {
          "content": {
            "description": "The content of the Note.",
            "example": "Had a conversation about this on 12th of July.",
            "maxLength": 65535,
            "minLength": 1,
            "type": "string"
          },
          "pinned": {
            "description": "Whether the Note should be pinned.",
            "type": "boolean",
            "example": true,
            "default": false
          },
          "visible_to": {
            "oneOf": [
              {
                "type": "object",
                "description": "Who the resource is visible to. Do not include in the request if there are no restrictions. If included in the request, only one of `just_me` or `user_group_ids` can be set.",
                "properties": {
                  "just_me": {
                    "description": "The resource should only be visible to the current user",
                    "type": "boolean",
                    "example": true,
                    "enum": [
                      true
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "description": "Who the resource is visible to, or null if there are no restrictions.",
                "properties": {
                  "user_group_ids": {
                    "description": "List of user group IDs the resource is visible to. You are only able to add user group IDs for user groups you have access to.",
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "example": [
                      13,
                      31
                    ]
                  }
                },
                "additionalProperties": false
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "content"
        ]
      },
      "RoleAdd": {
        "description": "A single Role from the Small Groups module.",
        "type": "object",
        "properties": {
          "name": {
            "description": "The Role's name.",
            "type": "string",
            "example": "Cake bringer",
            "maxLength": 30,
            "minLength": 1
          },
          "notify_signups": {
            "description": "Whether to receive an email for each Sign-Up.",
            "type": "boolean",
            "example": true,
            "default": false
          },
          "flyer_visible": {
            "description": "Whether Members with this Role have their Contact details appear on the Group flyers.",
            "type": "boolean",
            "example": true,
            "default": false
          },
          "my_visible": {
            "description": "Whether the Role will show within the Group Members list of My ChurchSuite.",
            "type": "boolean",
            "example": true,
            "default": false
          },
          "my_edit": {
            "description": "Whether Members with this Role can edit the Group details and Member list through My ChurchSuite.",
            "type": "boolean",
            "example": true,
            "default": false
          },
          "my_attendance": {
            "description": "Whether Members with this Role can submit attendance data through My ChurchSuite.",
            "type": "boolean",
            "example": true,
            "default": false
          }
        },
        "additionalProperties": false,
        "required": [
          "name"
        ]
      },
      "RoleEdit": {
        "description": "A single Role from the Small Groups module.",
        "type": "object",
        "properties": {
          "name": {
            "description": "The Role's name.",
            "type": "string",
            "example": "Cake bringer",
            "maxLength": 30,
            "minLength": 1
          },
          "notify_signups": {
            "description": "Whether to receive an email for each Sign-Up.",
            "type": "boolean",
            "example": true
          },
          "flyer_visible": {
            "description": "Whether Members with this Role have their Contact details appear on the Group flyers.",
            "type": "boolean",
            "example": true
          },
          "my_visible": {
            "description": "Whether the Role will show within the Group Members list of My ChurchSuite.",
            "type": "boolean",
            "example": true
          },
          "my_edit": {
            "description": "Whether Members with this Role can edit the Group details and Member list through My ChurchSuite.",
            "type": "boolean",
            "example": true
          },
          "my_attendance": {
            "description": "Whether Members with this Role can submit attendance data through My ChurchSuite.",
            "type": "boolean",
            "example": true
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "notify_signups",
          "flyer_visible",
          "my_visible",
          "my_edit",
          "my_attendance"
        ]
      },
      "Role2": {
        "description": "A single Role from the Small Groups module.",
        "type": "object",
        "properties": {
          "id": {
            "description": "The Role's ID.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "name": {
            "description": "The Role's name.",
            "type": "string",
            "example": "Cake bringer"
          },
          "notify_signups": {
            "description": "Whether to receive an email for each Sign-Up.",
            "type": "boolean",
            "example": true
          },
          "flyer_visible": {
            "description": "Whether Members with this Role have their Contact details appear on the Group flyers.",
            "type": "boolean",
            "example": true
          },
          "my_visible": {
            "description": "Whether the Role will show within the Group Members list of My ChurchSuite.",
            "type": "boolean",
            "example": true
          },
          "my_edit": {
            "description": "Whether Members with this Role can edit the Group details and Member list through My ChurchSuite.",
            "type": "boolean",
            "example": true
          },
          "my_attendance": {
            "description": "Whether Members with this Role can submit attendance data through My ChurchSuite.",
            "type": "boolean",
            "example": true
          },
          "order": {
            "description": "The order of the Role within lists.",
            "type": "integer",
            "example": 12,
            "minimum": 1
          },
          "created_at": {
            "description": "Date and time the Role was created.",
            "type": "string",
            "format": "date-time",
            "example": "2014-04-25T10:10:32Z",
            "nullable": true
          },
          "created_by": {
            "description": "The user who created the Role.",
            "type": "string",
            "example": "neil",
            "nullable": true
          },
          "modified_at": {
            "description": "Date and time the Role was last modified.",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-19T14:52:40Z",
            "nullable": true
          },
          "modified_by": {
            "description": "The user who last modified the Role.",
            "type": "string",
            "example": "anthony",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "notify_signups",
          "flyer_visible",
          "my_visible",
          "my_edit",
          "my_attendance",
          "order",
          "created_at",
          "created_by",
          "modified_at",
          "modified_by"
        ]
      }
    },
    "responses": {
      "400": {
        "description": "Invalid request.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "error": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "status": {
                      "type": "integer",
                      "enum": [
                        400
                      ]
                    },
                    "errors": {
                      "type": "object",
                      "example": {
                        "first_name": "This field is required.",
                        "ticket_id": "This ticket_id is invalid for this event."
                      },
                      "additionalProperties": {
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "object",
                            "additionalProperties": {
                              "type": "string"
                            }
                          }
                        ]
                      }
                    },
                    "message": {
                      "type": "string",
                      "example": "There were validation errors with the data you provided."
                    }
                  },
                  "required": [
                    "status",
                    "errors",
                    "message"
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "error"
              ]
            }
          }
        }
      },
      "401": {
        "description": "Unauthorized - the credentials provided are incorrect or no longer active.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "error": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "status": {
                      "type": "integer",
                      "enum": [
                        401
                      ]
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  },
                  "required": [
                    "status",
                    "message"
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "error"
              ]
            }
          }
        }
      },
      "403": {
        "description": "Forbidden - you do not have permission to access this resource.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "error": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "status": {
                      "type": "integer",
                      "enum": [
                        403
                      ]
                    },
                    "message": {
                      "type": "string",
                      "example": "You do not have sufficient permissions for this action"
                    }
                  },
                  "required": [
                    "status",
                    "message"
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "error"
              ]
            }
          }
        }
      },
      "404": {
        "description": "Not Found - the resource or API endpoint cannot be found.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "error": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "status": {
                      "type": "integer",
                      "enum": [
                        404
                      ]
                    },
                    "message": {
                      "type": "string",
                      "example": "Not Found"
                    }
                  },
                  "required": [
                    "status",
                    "message"
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "error"
              ]
            }
          }
        }
      },
      "409": {
        "description": "Conflict - a conflict exists that prevents your request from being completed.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "error": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "status": {
                      "type": "integer",
                      "enum": [
                        409
                      ]
                    },
                    "message": {
                      "type": "string",
                      "example": "Your event cannot be deleted. A sign-up paid through Stripe and cannot be deleted."
                    }
                  },
                  "required": [
                    "status",
                    "message"
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "error"
              ]
            }
          }
        }
      },
      "429": {
        "description": "Too Many Requests - the rate limit has been exceeded.",
        "headers": {
          "Retry-After": {
            "description": "Number of seconds until the rate limiting period expires",
            "schema": {
              "type": "integer"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "error": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "status": {
                      "type": "integer",
                      "enum": [
                        429
                      ]
                    },
                    "message": {
                      "type": "string",
                      "example": "The rate limit has been exceeded.",
                      "enum": [
                        "The rate limit has been exceeded."
                      ]
                    }
                  },
                  "required": [
                    "status",
                    "message"
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "error"
              ]
            }
          }
        }
      }
    },
    "securitySchemes": {
      "api_enabled_user": {
        "type": "oauth2",
        "description": "Access APIv2 using the OAuth2 Client Credentials grant flow by enabling API access for a user.",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://login.churchsuite.com/oauth2/token",
            "scopes": {
              "full_access": "Full access on behalf of the API-enabled user",
              "account": "Read access to the default brand, sites, and non-sensitive account details",
              "brands.read": "Read access to all brands in the account",
              "profile.read": "Read access to the full account profile",
              "user": "Read access to the current user profile",
              "usergroups.read": "Read access to all user groups in the account",
              "users.read": "Read access to all users in the account"
            }
          }
        }
      },
      "oauth_app": {
        "type": "oauth2",
        "description": "Access APIv2 using the OAuth2 Authorization Code grant flow by creating an OAuth App.",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://login.churchsuite.com/oauth2/authorize",
            "tokenUrl": "https://login.churchsuite.com/oauth2/token",
            "scopes": {
              "full_access": "Full access on behalf of the user who logs in using the OAuth App",
              "account": "Read access to the default brand, sites, and non-sensitive account details",
              "brands.read": "Read access to all brands in the account",
              "profile.read": "Read access to the full account profile",
              "user": "Read access to the current user profile",
              "usergroups.read": "Read access to all user groups in the account",
              "users.read": "Read access to all users in the account"
            }
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "Brands",
      "description": "Brands allow you to control styling in different parts of your account."
    },
    {
      "name": "Integrations",
      "description": "Integrations allow you to access additional functionality provided by third-party services."
    },
    {
      "name": "Profile",
      "description": "Access details about your account, e.g. name, address, points of contact, etc."
    },
    {
      "name": "Sites",
      "description": "For organisations that span multiple physical locations, sites can be used to partition your account."
    },
    {
      "name": "Users",
      "description": "Manage who has access to view or modify data within your account."
    },
    {
      "name": "Contacts",
      "description": "Contacts are the adults associated with your organisation. Contacts can be linked to children through a parent/carer relationship, as well as being added as members of groups, rotas/rosters, etc. The contact object is one of the primary objects within the overall ecosystem.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/29-adding-a-new-contact-to-your-address-book"
      }
    },
    {
      "name": "Custom Fields",
      "description": "Custom Fields collect and manage information that doesn't fit in the module's standard or optional fields.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/39-creating-custom-fields"
      }
    },
    {
      "name": "Flows",
      "description": "Flows are an incredibly versatile tool designed to streamline repetitive people-processing tasks by breaking them down into manageable stages. For each stage, you define the choice of preset actions to be processed as each person becomes due.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/154-flows"
      }
    },
    {
      "name": "Form Fields",
      "description": "Form Fields are the building blocks used to construct Forms",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/589-forms"
      }
    },
    {
      "name": "Form Responses",
      "description": "Form Responses are the responses of completed online forms.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/600-managing-form-responses"
      }
    },
    {
      "name": "Key Dates",
      "description": "Key Dates are people's date-based milestones that you want to record and track over time. Common examples include \"First visit\", \"Became a member\", \"Attended leadership training\", etc. Typically, Key Dates are recommended over the use of a date-type custom field.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/31-stay-on-top-of-your-church-member-key-dates"
      }
    },
    {
      "name": "Tags",
      "description": "Tags allow you to flexibly categorise or group people together.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/33-communicate-with-groups-of-contacts-in-a-fixed-tag"
      }
    },
    {
      "name": "Gatherings",
      "description": "Add each gathering you want to record attendance for.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/653-adding-and-managing-gatherings-for-attendance"
      }
    },
    {
      "name": "Metricsets",
      "description": "A metricset is the structure under which metrics can be assigned.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/653-adding-and-managing-gatherings-for-attendance#addmetricsets"
      }
    },
    {
      "name": "Metrics",
      "description": "Metrics allow you to record number/currency values for the individual metrics you wish to track.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/653-adding-and-managing-attendance-gatherings#addmetricsets"
      }
    },
    {
      "name": "Records",
      "description": "A record is the structure used to record attendance for a gathering on a given date.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/285-how-to-use-the-attendance-module"
      }
    },
    {
      "name": "Bookings",
      "description": "Manage room and resource bookings for your organisation.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/121-adding-and-viewing-bookings"
      }
    },
    {
      "name": "Charges",
      "description": "Charges can be raised against a booking for hire or maintenance fees.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/426-booking-charges"
      }
    },
    {
      "name": "Customers",
      "description": "Customers are used to identify who is the point of contact for a booking.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/412-managing-booking-customers"
      }
    },
    {
      "name": "Prices",
      "description": "Prices let you set up suggested charges for the use of your organisation's resources.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/628-booking-prices"
      }
    },
    {
      "name": "Resources",
      "description": "Define a list of the rooms and other resources that can be allocated to a booking.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/122-creating-booking-types-and-resources"
      }
    },
    {
      "name": "Types",
      "description": "Categorise and manage the different types of bookings you handle, e.g. Internal Booking, External Booking, Wedding, etc.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/122-creating-booking-types-and-resources"
      }
    },
    {
      "name": "Categories",
      "description": "Organise your events using categories, e.g. \"Family events\", \"Discipleship\", etc.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/102-event-categories"
      }
    },
    {
      "name": "Events",
      "description": "Manage your organisation's events.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/98-adding-events-to-your-church-calendar"
      }
    },
    {
      "name": "Invites",
      "description": "Manage your organisation's event invites.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/460-event-invitations"
      }
    },
    {
      "name": "Sign-Ups",
      "description": "When a person signs up to attend an event, a sign-up is created for them. A sign-up may be linked to a contact, child or be standalone and only exist in reference to that event.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/193-adding-custom-question-to-event-sign-up"
      }
    },
    {
      "name": "Tickets",
      "description": "Add tickets to an event to provide sign-ups with a choice of options, which may have an optional cost or capacity.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/337-adding-tickets-to-your-events"
      }
    },
    {
      "name": "Children",
      "description": "Add children you interact with; manage their details and track engagement.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/575-adding-a-new-child"
      }
    },
    {
      "name": "Group Setups",
      "description": "A group setup is a collection of age-based groups.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/87-gatherings-groups-and-sessions-for-children"
      }
    },
    {
      "name": "Groups",
      "description": "A group is a collection of children matching the group's age rules.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/87-gatherings-groups-and-sessions-for-children"
      }
    },
    {
      "name": "Parent/Carers",
      "description": "Parent/Carers are people with parental responsibility for a child.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://https://support.churchsuite.com/article/81-how-to-link-a-child-to-their-parent"
      }
    },
    {
      "name": "Donations",
      "description": "Manage the donations you receive.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/51-adding-or-importing-donations"
      }
    },
    {
      "name": "Funds",
      "description": "Set up restricted, designated or general-purpose funds to categorise donations.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/115-setting-up-and-managing-funds-in-giving"
      }
    },
    {
      "name": "Givers",
      "description": "Add givers and manage their giving profile.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/120-adding-a-new-giver"
      }
    },
    {
      "name": "Pledges",
      "description": "Pledges are extremely helpful for planning, projecting future income and producing budgets.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/225-managing-pledges"
      }
    },
    {
      "name": "Labels",
      "description": "Labels are a way of categorising or grouping your organisations that share common attributes.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/612-managing-organisations-with-labels"
      }
    },
    {
      "name": "Members",
      "description": "Link key contacts to organisations in your network.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/613-adding-people-to-organisations"
      }
    },
    {
      "name": "Organisations",
      "description": "Manage the various external organisations in your network that you partner with.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/611-adding-organisations"
      }
    },
    {
      "name": "Roles",
      "description": "Roles are a useful way of distinguishing organisation members.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/614-assigning-roles-within-organisations"
      }
    },
    {
      "name": "LibraryItems",
      "description": "Library items can be added to plans on an adhoc basis but you can save time by building a library of the items that you use time and again.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/493-adding-library-items"
      }
    },
    {
      "name": "Plans",
      "description": "Add plans for managing and organising your services, events and bookings.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/514-creating-a-plan"
      }
    },
    {
      "name": "PlanItems",
      "description": "Individual items within a plan.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/514-creating-a-plan"
      }
    },
    {
      "name": "Songs",
      "description": "Add songs to your library, to use as building blocks to plan services.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/608-managing-songs"
      }
    },
    {
      "name": "SongArrangements",
      "description": "Individual arrangements of a Song.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/608-managing-songs"
      }
    },
    {
      "name": "TemplateItems",
      "description": "Individual items within a template.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/518-working-with-templates"
      }
    },
    {
      "name": "Templates",
      "description": "Create templates where the same or similar plans are added time and again.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/518-working-with-templates"
      }
    },
    {
      "name": "Ministries",
      "description": "Ministries are serving areas such as Welcome or Worship, where members can be grouped into teams and assigned roles. They are the building block from which Rotas are created.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/666-how-to-add-a-ministry"
      }
    },
    {
      "name": "Teams",
      "description": "Group together Ministry Members into Teams, and assign roles to them."
    },
    {
      "name": "Attendance",
      "description": "Attendance submitted through My ChurchSuite and Core will be listed here. Powerful attendance reporting can help you visualise small group engagement.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/93-small-group-attendance"
      }
    },
    {
      "name": "Clusters",
      "description": "Manage group oversight with clusters.",
      "externalDocs": {
        "description": "Explore our large database of online support articles for step-by-step help.",
        "url": "https://support.churchsuite.com/article/211-managing-small-group-oversight-with-clusters"
      }
    },
    {
      "name": "ChurchSuite"
    }
  ]
}