{
  "openapi": "3.0.3",
  "info": {
    "title": "Apideck Unified API",
    "version": "1.0.0",
    "description": "Apideck Unify is one API surface across Accounting, CRM, HRIS, ATS, File Storage, Ecommerce, and Issue Tracking, backed by 200+ downstream connectors. This document covers the flagship list/get operations for each unified API as a compact entry point for agents and function-calling. Every unified API has a complete, per-product OpenAPI specification linked from each tag's externalDocs and from https://www.apideck.com/apis.json — those are the source of truth for the full resource set, request/response schemas, and connector-specific notes.",
    "contact": {
      "name": "Apideck",
      "email": "hello@apideck.com",
      "url": "https://developers.apideck.com"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "externalDocs": {
    "description": "Apideck Developer Docs",
    "url": "https://developers.apideck.com"
  },
  "servers": [
    {
      "url": "https://unify.apideck.com",
      "description": "Unify API"
    }
  ],
  "security": [{ "apiKey": [] }],
  "tags": [
    {
      "name": "Accounting",
      "description": "Invoices, bills, payments, journal entries, ledger accounts, tax rates and more across 33 accounting platforms.",
      "externalDocs": {
        "description": "Full Accounting API specification",
        "url": "https://specs.apideck.com/accounting.yml"
      }
    },
    {
      "name": "CRM",
      "description": "Contacts, companies, opportunities, leads and pipelines across 21 CRM platforms.",
      "externalDocs": {
        "description": "Full CRM API specification",
        "url": "https://specs.apideck.com/crm.yml"
      }
    },
    {
      "name": "HRIS",
      "description": "Employees, departments, time off and payroll across 60 HR platforms.",
      "externalDocs": {
        "description": "Full HRIS API specification",
        "url": "https://specs.apideck.com/hris.yml"
      }
    },
    {
      "name": "ATS",
      "description": "Applicants, applications and jobs across 11 applicant tracking systems.",
      "externalDocs": {
        "description": "Full ATS API specification",
        "url": "https://specs.apideck.com/ats.yml"
      }
    },
    {
      "name": "File Storage",
      "description": "Files, folders, shared links and drives across Google Drive, Dropbox, OneDrive, Box and SharePoint.",
      "externalDocs": {
        "description": "Full File Storage API specification",
        "url": "https://specs.apideck.com/file-storage.yml"
      }
    },
    {
      "name": "Ecommerce",
      "description": "Orders, products, customers and stores across Shopify, WooCommerce, BigCommerce and more.",
      "externalDocs": {
        "description": "Full Ecommerce API specification",
        "url": "https://specs.apideck.com/ecommerce.yml"
      }
    },
    {
      "name": "Issue Tracking",
      "description": "Collections, tickets and comments across Jira, Linear, Asana and more.",
      "externalDocs": {
        "description": "Full Issue Tracking API specification",
        "url": "https://specs.apideck.com/issue-tracking.yml"
      }
    }
  ],
  "paths": {
    "/accounting/invoices": {
      "get": {
        "tags": ["Accounting"],
        "operationId": "invoicesAll",
        "summary": "List invoices",
        "description": "Returns a paginated list of invoices from the connected accounting platform.",
        "parameters": [
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" },
          { "$ref": "#/components/parameters/cursor" },
          { "$ref": "#/components/parameters/limit" }
        ],
        "responses": {
          "200": {
            "description": "Invoices returned",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InvoicesResponse" }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/accounting/invoices/{id}": {
      "get": {
        "tags": ["Accounting"],
        "operationId": "invoicesOne",
        "summary": "Get an invoice",
        "description": "Returns a single invoice by id from the connected accounting platform.",
        "parameters": [
          { "$ref": "#/components/parameters/id" },
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" }
        ],
        "responses": {
          "200": {
            "description": "Invoice returned",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status_code": { "type": "integer", "example": 200 },
                    "status": { "type": "string", "example": "OK" },
                    "data": { "$ref": "#/components/schemas/Invoice" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/crm/contacts": {
      "get": {
        "tags": ["CRM"],
        "operationId": "contactsAll",
        "summary": "List contacts",
        "description": "Returns a paginated list of contacts from the connected CRM platform.",
        "parameters": [
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" },
          { "$ref": "#/components/parameters/cursor" },
          { "$ref": "#/components/parameters/limit" }
        ],
        "responses": {
          "200": {
            "description": "Contacts returned",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ContactsResponse" }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/crm/contacts/{id}": {
      "get": {
        "tags": ["CRM"],
        "operationId": "contactsOne",
        "summary": "Get a contact",
        "description": "Returns a single contact by id from the connected CRM platform.",
        "parameters": [
          { "$ref": "#/components/parameters/id" },
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" }
        ],
        "responses": {
          "200": {
            "description": "Contact returned",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status_code": { "type": "integer", "example": 200 },
                    "status": { "type": "string", "example": "OK" },
                    "data": { "$ref": "#/components/schemas/Contact" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/hris/employees": {
      "get": {
        "tags": ["HRIS"],
        "operationId": "employeesAll",
        "summary": "List employees",
        "description": "Returns a paginated list of employees from the connected HR platform.",
        "parameters": [
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" },
          { "$ref": "#/components/parameters/cursor" },
          { "$ref": "#/components/parameters/limit" }
        ],
        "responses": {
          "200": {
            "description": "Employees returned",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/EmployeesResponse" }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/hris/employees/{id}": {
      "get": {
        "tags": ["HRIS"],
        "operationId": "employeesOne",
        "summary": "Get an employee",
        "description": "Returns a single employee by id from the connected HR platform.",
        "parameters": [
          { "$ref": "#/components/parameters/id" },
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" }
        ],
        "responses": {
          "200": {
            "description": "Employee returned",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status_code": { "type": "integer", "example": 200 },
                    "status": { "type": "string", "example": "OK" },
                    "data": { "$ref": "#/components/schemas/Employee" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/ats/applicants": {
      "get": {
        "tags": ["ATS"],
        "operationId": "applicantsAll",
        "summary": "List applicants",
        "description": "Returns a paginated list of applicants from the connected applicant tracking system.",
        "parameters": [
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" },
          { "$ref": "#/components/parameters/cursor" },
          { "$ref": "#/components/parameters/limit" }
        ],
        "responses": {
          "200": {
            "description": "Applicants returned",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ApplicantsResponse" }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/ats/applicants/{id}": {
      "get": {
        "tags": ["ATS"],
        "operationId": "applicantsOne",
        "summary": "Get an applicant",
        "description": "Returns a single applicant by id from the connected applicant tracking system.",
        "parameters": [
          { "$ref": "#/components/parameters/id" },
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" }
        ],
        "responses": {
          "200": {
            "description": "Applicant returned",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status_code": { "type": "integer", "example": 200 },
                    "status": { "type": "string", "example": "OK" },
                    "data": { "$ref": "#/components/schemas/Applicant" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/file-storage/files": {
      "get": {
        "tags": ["File Storage"],
        "operationId": "filesAll",
        "summary": "List files",
        "description": "Returns a paginated list of files from the connected file storage platform.",
        "parameters": [
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" },
          { "$ref": "#/components/parameters/cursor" },
          { "$ref": "#/components/parameters/limit" }
        ],
        "responses": {
          "200": {
            "description": "Files returned",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/FilesResponse" }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/file-storage/files/{id}": {
      "get": {
        "tags": ["File Storage"],
        "operationId": "filesOne",
        "summary": "Get a file",
        "description": "Returns a single file by id from the connected file storage platform.",
        "parameters": [
          { "$ref": "#/components/parameters/id" },
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" }
        ],
        "responses": {
          "200": {
            "description": "File returned",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status_code": { "type": "integer", "example": 200 },
                    "status": { "type": "string", "example": "OK" },
                    "data": { "$ref": "#/components/schemas/File" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/ecommerce/orders": {
      "get": {
        "tags": ["Ecommerce"],
        "operationId": "ordersAll",
        "summary": "List orders",
        "description": "Returns a paginated list of orders from the connected ecommerce platform.",
        "parameters": [
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" },
          { "$ref": "#/components/parameters/cursor" },
          { "$ref": "#/components/parameters/limit" }
        ],
        "responses": {
          "200": {
            "description": "Orders returned",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/OrdersResponse" }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/ecommerce/orders/{id}": {
      "get": {
        "tags": ["Ecommerce"],
        "operationId": "ordersOne",
        "summary": "Get an order",
        "description": "Returns a single order by id from the connected ecommerce platform.",
        "parameters": [
          { "$ref": "#/components/parameters/id" },
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" }
        ],
        "responses": {
          "200": {
            "description": "Order returned",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status_code": { "type": "integer", "example": 200 },
                    "status": { "type": "string", "example": "OK" },
                    "data": { "$ref": "#/components/schemas/Order" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/issue-tracking/collections/{collection_id}/tickets": {
      "get": {
        "tags": ["Issue Tracking"],
        "operationId": "ticketsAll",
        "summary": "List tickets",
        "description": "Returns a paginated list of tickets in a collection from the connected issue tracking platform.",
        "parameters": [
          { "$ref": "#/components/parameters/collectionId" },
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" },
          { "$ref": "#/components/parameters/cursor" },
          { "$ref": "#/components/parameters/limit" }
        ],
        "responses": {
          "200": {
            "description": "Tickets returned",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/TicketsResponse" }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/issue-tracking/collections/{collection_id}/tickets/{ticket_id}": {
      "get": {
        "tags": ["Issue Tracking"],
        "operationId": "ticketsOne",
        "summary": "Get a ticket",
        "description": "Returns a single ticket by id in a collection from the connected issue tracking platform.",
        "parameters": [
          { "$ref": "#/components/parameters/collectionId" },
          {
            "name": "ticket_id",
            "in": "path",
            "required": true,
            "description": "ID of the ticket to retrieve.",
            "schema": { "type": "string" }
          },
          { "$ref": "#/components/parameters/consumerId" },
          { "$ref": "#/components/parameters/applicationId" },
          { "$ref": "#/components/parameters/serviceId" }
        ],
        "responses": {
          "200": {
            "description": "Ticket returned",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status_code": { "type": "integer", "example": 200 },
                    "status": { "type": "string", "example": "OK" },
                    "data": { "$ref": "#/components/schemas/Ticket" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "Bearer token. Sign up at https://app.apideck.com to obtain your Unify API key, then send it as `Authorization: Bearer <API_KEY>`."
      }
    },
    "parameters": {
      "id": {
        "name": "id",
        "in": "path",
        "required": true,
        "description": "ID of the resource to retrieve.",
        "schema": { "type": "string" }
      },
      "collectionId": {
        "name": "collection_id",
        "in": "path",
        "required": true,
        "description": "ID of the collection (e.g. Jira project, Linear team) the ticket belongs to.",
        "schema": { "type": "string" }
      },
      "consumerId": {
        "name": "x-apideck-consumer-id",
        "in": "header",
        "required": true,
        "description": "The id of the customer stored inside Apideck Vault (a user id, account id, or device id).",
        "schema": { "type": "string" },
        "example": "test-consumer"
      },
      "applicationId": {
        "name": "x-apideck-app-id",
        "in": "header",
        "required": true,
        "description": "The application id of your Unify application, available at https://app.apideck.com/unify/api-keys.",
        "schema": { "type": "string" }
      },
      "serviceId": {
        "name": "x-apideck-service-id",
        "in": "header",
        "required": false,
        "description": "The downstream connector to call (e.g. quickbooks, xero, hubspot). Only required when a consumer has more than one active connection for this unified API.",
        "schema": { "type": "string" },
        "example": "quickbooks"
      },
      "cursor": {
        "name": "cursor",
        "in": "query",
        "required": false,
        "description": "Cursor to start from. Found in meta.cursors.next of the previous response.",
        "schema": { "type": "string", "nullable": true }
      },
      "limit": {
        "name": "limit",
        "in": "query",
        "required": false,
        "description": "Number of results to return.",
        "schema": { "type": "integer", "minimum": 1, "maximum": 200, "default": 20 }
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Request validation failed.",
        "content": {
          "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } }
        }
      },
      "Unauthorized": {
        "description": "Missing or invalid API key.",
        "content": {
          "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } }
        }
      },
      "NotFound": {
        "description": "The requested resource, connection, or connector could not be found.",
        "content": {
          "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } }
        }
      }
    },
    "schemas": {
      "ErrorResponse": {
        "type": "object",
        "description": "Standard Apideck error envelope, returned on all non-2xx responses.",
        "properties": {
          "status_code": { "type": "integer", "example": 400 },
          "error": { "type": "string", "example": "Bad Request" },
          "type_name": { "type": "string", "example": "RequestValidationError" },
          "message": { "type": "string" },
          "detail": { "type": "object" },
          "ref": {
            "type": "string",
            "description": "Link to the error type's documentation.",
            "example": "https://developers.apideck.com/errors#requestvalidationerror"
          }
        },
        "required": ["status_code", "error", "type_name", "message"]
      },
      "Meta": {
        "type": "object",
        "description": "Cursor-based pagination metadata.",
        "properties": {
          "items_on_page": { "type": "integer", "example": 20 },
          "cursors": {
            "type": "object",
            "properties": {
              "previous": { "type": "string", "nullable": true },
              "current": { "type": "string", "nullable": true },
              "next": { "type": "string", "nullable": true }
            }
          }
        }
      },
      "Invoice": {
        "type": "object",
        "description": "Unified invoice. Additional connector-specific fields are available through custom field mapping; see the full Accounting API specification for the complete schema.",
        "properties": {
          "id": { "type": "string", "example": "12345" },
          "number": { "type": "string" },
          "status": { "type": "string", "enum": ["draft", "submitted", "authorised", "paid", "voided"] },
          "currency": { "type": "string", "example": "USD" },
          "total_amount": { "type": "number" },
          "balance": { "type": "number" },
          "invoice_date": { "type": "string", "format": "date-time" },
          "due_date": { "type": "string", "format": "date-time" },
          "updated_at": { "type": "string", "format": "date-time" }
        },
        "additionalProperties": true
      },
      "InvoicesResponse": {
        "type": "object",
        "properties": {
          "status_code": { "type": "integer", "example": 200 },
          "status": { "type": "string", "example": "OK" },
          "data": { "type": "array", "items": { "$ref": "#/components/schemas/Invoice" } },
          "meta": { "$ref": "#/components/schemas/Meta" }
        }
      },
      "Contact": {
        "type": "object",
        "description": "Unified CRM contact. Additional connector-specific fields are available through custom field mapping; see the full CRM API specification for the complete schema.",
        "properties": {
          "id": { "type": "string" },
          "first_name": { "type": "string" },
          "last_name": { "type": "string" },
          "emails": { "type": "array", "items": { "type": "object" } },
          "phone_numbers": { "type": "array", "items": { "type": "object" } },
          "company_name": { "type": "string" },
          "updated_at": { "type": "string", "format": "date-time" }
        },
        "additionalProperties": true
      },
      "ContactsResponse": {
        "type": "object",
        "properties": {
          "status_code": { "type": "integer", "example": 200 },
          "status": { "type": "string", "example": "OK" },
          "data": { "type": "array", "items": { "$ref": "#/components/schemas/Contact" } },
          "meta": { "$ref": "#/components/schemas/Meta" }
        }
      },
      "Employee": {
        "type": "object",
        "description": "Unified HRIS employee. Additional connector-specific fields are available through custom field mapping; see the full HRIS API specification for the complete schema.",
        "properties": {
          "id": { "type": "string" },
          "first_name": { "type": "string" },
          "last_name": { "type": "string" },
          "employee_number": { "type": "string" },
          "department": { "type": "object" },
          "employment_status": { "type": "string" },
          "updated_at": { "type": "string", "format": "date-time" }
        },
        "additionalProperties": true
      },
      "EmployeesResponse": {
        "type": "object",
        "properties": {
          "status_code": { "type": "integer", "example": 200 },
          "status": { "type": "string", "example": "OK" },
          "data": { "type": "array", "items": { "$ref": "#/components/schemas/Employee" } },
          "meta": { "$ref": "#/components/schemas/Meta" }
        }
      },
      "Applicant": {
        "type": "object",
        "description": "Unified ATS applicant. Additional connector-specific fields are available through custom field mapping; see the full ATS API specification for the complete schema.",
        "properties": {
          "id": { "type": "string" },
          "first_name": { "type": "string" },
          "last_name": { "type": "string" },
          "emails": { "type": "array", "items": { "type": "object" } },
          "stage": { "type": "object" },
          "updated_at": { "type": "string", "format": "date-time" }
        },
        "additionalProperties": true
      },
      "ApplicantsResponse": {
        "type": "object",
        "properties": {
          "status_code": { "type": "integer", "example": 200 },
          "status": { "type": "string", "example": "OK" },
          "data": { "type": "array", "items": { "$ref": "#/components/schemas/Applicant" } },
          "meta": { "$ref": "#/components/schemas/Meta" }
        }
      },
      "File": {
        "type": "object",
        "description": "Unified file. Additional connector-specific fields are available through custom field mapping; see the full File Storage API specification for the complete schema.",
        "properties": {
          "id": { "type": "string" },
          "name": { "type": "string" },
          "size": { "type": "integer" },
          "mime_type": { "type": "string" },
          "parent_folder_id": { "type": "string" },
          "updated_at": { "type": "string", "format": "date-time" }
        },
        "additionalProperties": true
      },
      "FilesResponse": {
        "type": "object",
        "properties": {
          "status_code": { "type": "integer", "example": 200 },
          "status": { "type": "string", "example": "OK" },
          "data": { "type": "array", "items": { "$ref": "#/components/schemas/File" } },
          "meta": { "$ref": "#/components/schemas/Meta" }
        }
      },
      "Order": {
        "type": "object",
        "description": "Unified ecommerce order. Additional connector-specific fields are available through custom field mapping; see the full Ecommerce API specification for the complete schema.",
        "properties": {
          "id": { "type": "string" },
          "number": { "type": "string" },
          "status": { "type": "string" },
          "currency": { "type": "string" },
          "total_amount": { "type": "number" },
          "customer_id": { "type": "string" },
          "updated_at": { "type": "string", "format": "date-time" }
        },
        "additionalProperties": true
      },
      "OrdersResponse": {
        "type": "object",
        "properties": {
          "status_code": { "type": "integer", "example": 200 },
          "status": { "type": "string", "example": "OK" },
          "data": { "type": "array", "items": { "$ref": "#/components/schemas/Order" } },
          "meta": { "$ref": "#/components/schemas/Meta" }
        }
      },
      "Ticket": {
        "type": "object",
        "description": "Unified issue-tracking ticket. Additional connector-specific fields are available through custom field mapping; see the full Issue Tracking API specification for the complete schema.",
        "properties": {
          "id": { "type": "string" },
          "name": { "type": "string" },
          "description": { "type": "string" },
          "status": { "type": "object" },
          "assignees": { "type": "array", "items": { "type": "object" } },
          "updated_at": { "type": "string", "format": "date-time" }
        },
        "additionalProperties": true
      },
      "TicketsResponse": {
        "type": "object",
        "properties": {
          "status_code": { "type": "integer", "example": 200 },
          "status": { "type": "string", "example": "OK" },
          "data": { "type": "array", "items": { "$ref": "#/components/schemas/Ticket" } },
          "meta": { "$ref": "#/components/schemas/Meta" }
        }
      }
    }
  }
}
