Everything about one contract, including each service line's actual products/labor.
Adds the resolved Client, the invoice schedule (DaysBeforeInvoiceCreation,
InvoiceDue, AutoApproveAndSend), Contacts, and on each service line one
filled labor-terms-detail object (UnlimitedHoursDetails/PerHourDetails/
LimitedHoursDetails/BlockHoursDetails, matching LaborTerms) plus
LineItems — the actual products/labor billed on that line, empty when there’s
nothing billed yet. A non-existent id, or one belonging to another service provider, is a
404.
GET
/
v1
/
contracts
/
{contractId}
Everything about one contract, including each service line's actual products/labor.
curl --request GET \ --url https://api.usw.gorelo.io/v1/contracts/{contractId} \ --header 'X-API-Key: <api-key>'
Your Gorelo API key. See Generate API key. If your data is hosted in Australia, click the base URL at the top of this page and select https://api.aue.gorelo.io.
Everything about one contract: the client and locations it covers, its billing schedule, and
each service line with the actual products/labor billed on it.
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Gorelo Documentation","colors":{"primary":"#1DAF94","light":"#8AEFDD","dark":"#1DAF94"},"logo":{"light":"https://mintcdn.com/gorelo/J8h_fLstMj_tYUTJ/logo/logo-light.svg?fit=max\u0026auto=format\u0026n=J8h_fLstMj_tYUTJ\u0026q=85\u0026s=3c12ffa7afbcef131d2c6fb36f00e159","dark":"https://mintcdn.com/gorelo/J8h_fLstMj_tYUTJ/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=J8h_fLstMj_tYUTJ\u0026q=85\u0026s=2dc592c604dd68bb156e97c047088df2"},"favicon":"https://mintcdn.com/gorelo/eK-NlDv-DeG3Jk2m/favicon.svg?fit=max\u0026auto=format\u0026n=eK-NlDv-DeG3Jk2m\u0026q=85\u0026s=99510712391acd38a7057cf358869244","api":{"url":"full"},"appearance":{"default":"dark"},"background":{"color":{"light":"#FBFBFB","dark":"#1F2023"}},"navbar":{"links":[{"href":"https://feedback.gorelo.io/changelog","label":"Changelog"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.mintlify.com"}},"footer":{"socials":{"x":"https://twitter.com/Goreloio","facebook":"https://www.facebook.com/gorelo.io","linkedin":"https://www.linkedin.com/company/gorelo","youtube":"https://www.youtube.com/@gorelotech","discord":"https://discord.com/invite/BpmP8BSrj6","website":"https://www.gorelo.io/"}},"seo":{"indexing":"navigable"},"fonts":{"family":"Inter","weight":400},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","default":true,"href":"what-is-gorelo"},{"language":"ar","href":"ar/what-is-gorelo"},{"language":"pt-BR","href":"pt-BR/what-is-gorelo"},{"language":"fr-CA","href":"fr-CA/what-is-gorelo"},{"language":"ca","href":"ca/what-is-gorelo"},{"language":"cn","href":"cn/what-is-gorelo"},{"language":"zh","href":"zh/what-is-gorelo"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"gorelo","hasAudioNarration":false,"actualSubdomain":"gorelo","customDomains":["help.gorelo.io"],"gitSource":{"type":"github","owner":"gorelo","repo":"gorelo_public_docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae0e7e8f954e5368715cbc6","collectionId":"9e2c5cbd-ad8e-42d1-aeb6-bcda615db32d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae0e7e8f954e5368715cbc6"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae0e8186786d105b8a06985","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"en","tag":"API","count":128},{"language":"ar","tag":"API","count":128},{"language":"ca","tag":"API","count":128},{"language":"cn","tag":"API","count":128},{"language":"fr-CA","tag":"API","count":128},{"language":"pt-BR","tag":"API","count":128},{"language":"zh","tag":"API","count":128},{"language":"en","tag":"API reference","count":125},{"language":"ar","tag":"مرجع API","count":125},{"language":"ca","tag":"Referència de l'API","count":125},{"language":"cn","tag":"API 参考","count":125},{"language":"fr-CA","tag":"Référence de l'API","count":125},{"language":"pt-BR","tag":"Referência da API","count":125},{"language":"zh","tag":"API 參考","count":125},{"language":"en","tag":"Service Delivery","count":40},{"language":"ar","tag":"تقديم الخدمة","count":40},{"language":"ca","tag":"Prestació de servei","count":40},{"language":"cn","tag":"服务交付","count":40},{"language":"fr-CA","tag":"Prestation de services","count":40},{"language":"pt-BR","tag":"Entrega de serviços","count":40},{"language":"zh","tag":"服務交付","count":40},{"language":"en","tag":"Remote Management","count":35},{"language":"ar","tag":"الإدارة عن بُعد","count":35},{"language":"ca","tag":"Gestió remota","count":35},{"language":"cn","tag":"远程管理","count":35},{"language":"fr-CA","tag":"Gestion à distance","count":35},{"language":"pt-BR","tag":"Gerenciamento remoto","count":35},{"language":"zh","tag":"遠端管理","count":35},{"language":"en","tag":"Billing","count":34},{"language":"en","tag":"Projects","count":31},{"language":"ar","tag":"Projects","count":28},{"language":"ca","tag":"Projects","count":28},{"language":"cn","tag":"Projects","count":28},{"language":"fr-CA","tag":"Projects","count":28},{"language":"pt-BR","tag":"Projects","count":28},{"language":"zh","tag":"Projects","count":28},{"language":"en","tag":"Assets","count":26},{"language":"ar","tag":"Billing","count":24},{"language":"ca","tag":"Billing","count":24},{"language":"cn","tag":"Billing","count":24},{"language":"fr-CA","tag":"Billing","count":24},{"language":"pt-BR","tag":"Billing","count":24},{"language":"zh","tag":"Billing","count":24},{"language":"en","tag":"Tickets","count":22},{"language":"ar","tag":"Assets","count":22},{"language":"ca","tag":"Assets","count":22},{"language":"cn","tag":"Assets","count":22},{"language":"fr-CA","tag":"Assets","count":22},{"language":"pt-BR","tag":"Tickets","count":22},{"language":"pt-BR","tag":"Assets","count":22},{"language":"zh","tag":"Assets","count":22},{"language":"en","tag":"How-to guides","count":19},{"language":"ar","tag":"أدلة الكيفية","count":19},{"language":"ca","tag":"Guies pràctiques","count":19},{"language":"cn","tag":"操作指南","count":19},{"language":"fr-CA","tag":"Guides pratiques","count":19},{"language":"pt-BR","tag":"Guias práticos","count":19},{"language":"zh","tag":"操作指南","count":19},{"language":"ar","tag":"Tickets","count":16},{"language":"ca","tag":"Tickets","count":16},{"language":"cn","tag":"Tickets","count":16},{"language":"fr-CA","tag":"Tickets","count":16},{"language":"zh","tag":"Tickets","count":16},{"language":"en","tag":"Documents","count":15},{"language":"ca","tag":"Documents","count":15},{"language":"fr-CA","tag":"Documents","count":15},{"language":"ar","tag":"العمليات","count":13},{"language":"cn","tag":"运营","count":13},{"language":"pt-BR","tag":"Operações","count":13},{"language":"zh","tag":"營運","count":13}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"help@gorelo.io","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor","slug":"/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor","pageMetadata":{"title":"Everything about one contract, including each service line's actual products/labor.","description":"Adds the resolved `Client`, the invoice schedule (`DaysBeforeInvoiceCreation`,\r\n`InvoiceDue`, `AutoApproveAndSend`), `Contacts`, and on each service line one\r\nfilled labor-terms-detail object (`UnlimitedHoursDetails`/`PerHourDetails`/\r\n`LimitedHoursDetails`/`BlockHoursDetails`, matching `LaborTerms`) plus\r\n`LineItems` — the actual products/labor billed on that line, empty when there's\r\nnothing billed yet. A non-existent id, or one belonging to another service provider, is a\r\n404.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contracts/{contractId}","href":"/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Adds the resolved \", _jsx(_components.code, {\n children: \"Client\"\n }), \", the invoice schedule (\", _jsx(_components.code, {\n children: \"DaysBeforeInvoiceCreation\"\n }), \",\\r\\n\", _jsx(_components.code, {\n children: \"InvoiceDue\"\n }), \", \", _jsx(_components.code, {\n children: \"AutoApproveAndSend\"\n }), \"), \", _jsx(_components.code, {\n children: \"Contacts\"\n }), \", and on each service line one\\r\\nfilled labor-terms-detail object (\", _jsx(_components.code, {\n children: \"UnlimitedHoursDetails\"\n }), \"/\", _jsx(_components.code, {\n children: \"PerHourDetails\"\n }), \"/\\r\\n\", _jsx(_components.code, {\n children: \"LimitedHoursDetails\"\n }), \"/\", _jsx(_components.code, {\n children: \"BlockHoursDetails\"\n }), \", matching \", _jsx(_components.code, {\n children: \"LaborTerms\"\n }), \") plus\\r\\n\", _jsx(_components.code, {\n children: \"LineItems\"\n }), \" — the actual products/labor billed on that line, empty when there’s\\r\\nnothing billed yet. A non-existent id, or one belonging to another service provider, is a\\r\\n404.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Everything about one contract, including each service line's actual products/labor.","description":"Adds the resolved `Client`, the invoice schedule (`DaysBeforeInvoiceCreation`,\r\n`InvoiceDue`, `AutoApproveAndSend`), `Contacts`, and on each service line one\r\nfilled labor-terms-detail object (`UnlimitedHoursDetails`/`PerHourDetails`/\r\n`LimitedHoursDetails`/`BlockHoursDetails`, matching `LaborTerms`) plus\r\n`LineItems` — the actual products/labor billed on that line, empty when there's\r\nnothing billed yet. A non-existent id, or one belonging to another service provider, is a\r\n404.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contracts/{contractId}","href":"/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Billing"],"summary":"Everything about one contract, including each service line's actual products/labor.","description":"Adds the resolved `Client`, the invoice schedule (`DaysBeforeInvoiceCreation`,\r\n`InvoiceDue`, `AutoApproveAndSend`), `Contacts`, and on each service line one\r\nfilled labor-terms-detail object (`UnlimitedHoursDetails`/`PerHourDetails`/\r\n`LimitedHoursDetails`/`BlockHoursDetails`, matching `LaborTerms`) plus\r\n`LineItems` — the actual products/labor billed on that line, empty when there's\r\nnothing billed yet. A non-existent id, or one belonging to another service provider, is a\r\n404.","operationId":"get_v1_contracts_contractId","parameters":["f3155a68-13e1-4753-8177-4e9c22a1b3f6"],"responses":{"200":"98b409c1-d337-44fb-9442-d550f7d2ce99","401":"6462d8f1-163c-42ac-8970-f33bc00e9284","404":"29175895-ef95-4b6e-8af3-cc4a934c1ba7","500":"f5c2b3a9-9b7f-4198-9f04-091e01169f44"},"method":"get","type":"path","servers":["c45f3e55-70a5-4683-bd92-9d0a077a9a8f","2a42ac77-a3aa-4890-87be-e126aeef1e79"],"security":["f01c3aed-69e3-4627-b3db-e003e1c21463"],"path":"/v1/contracts/{contractId}","baseUrlOptions":["https://api.usw.gorelo.io","https://api.aue.gorelo.io"],"title":"Everything about one contract, including each service line's actual products/labor.","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated","urlDisplay":"full"},"dependencies":{"parameters":{"f3155a68-13e1-4753-8177-4e9c22a1b3f6":{"name":"contractId","in":"path","description":"Identifier of the contract.","required":true,"schema":{"type":"integer","format":"int64","isRequired":true,"description":"Identifier of the contract.","uniqueKey":"","typeLabel":"integer\u003cint64>"}}},"responses":{"98b409c1-d337-44fb-9442-d550f7d2ce99":{"description":"OK","content":{"text/plain":{"schema":{"type":"object","properties":{"StatusCode":{"enum":[100,101,102,103,200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,423,424,426,428,429,431,451,500,501,502,503,504,505,506,507,508,510,511],"type":"integer","format":"int32","uniqueKey":"StatusCode","typeLabel":"enum\u003cinteger>"},"IsSuccess":{"type":"boolean","uniqueKey":"IsSuccess","typeLabel":"boolean"},"Data":{"type":"object","properties":{"Id":{"type":"integer","description":"Identifier of the contract.","format":"int64","example":4021,"uniqueKey":"Data.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Name of the contract.","example":"All Labor Terms Example","uniqueKey":"Data.Name","typeLabel":"string"},"Status":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.Status.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.Status.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.Status","typeLabel":"object"},"Client":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.Client.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.Client.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.Client","typeLabel":"object"},"LocationIds":{"type":"array","items":{"type":"integer","format":"int64","uniqueKey":"Data.LocationIds.items.[INDEX]","typeLabel":"integer\u003cint64>"},"description":"The client locations the contract is scoped to, as location ids. Empty\r\nwhen the contract covers every one of the client's locations (see\r\n`IsForAllLocations`) as well as when a location-scoped contract's rows have all\r\nbeen removed; never null.","uniqueKey":"Data.LocationIds","typeLabel":"integer\u003cint64>[]"},"IsForAllLocations":{"type":"boolean","description":"Whether the contract covers every one of the client's locations rather than the specific\r\nones named in `LocationIds`. When true, `LocationIds` is empty by\r\ndefinition.","uniqueKey":"Data.IsForAllLocations","typeLabel":"boolean"},"CreatedOn":{"oneOf":[{"type":"string","description":"When the contract was created, in UTC.","format":"date-time","uniqueKey":"Data.CreatedOn.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the contract was created, in UTC.","format":"date-time","uniqueKey":"Data.CreatedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.CreatedOn","typeLabel":"string\u003cdate-time> | null"},"UpdatedOn":{"oneOf":[{"type":"string","description":"When the contract was last changed, in UTC. Null when it has never been changed.","format":"date-time","uniqueKey":"Data.UpdatedOn.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the contract was last changed, in UTC. Null when it has never been changed.","format":"date-time","uniqueKey":"Data.UpdatedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.UpdatedOn","typeLabel":"string\u003cdate-time> | null"},"Reference":{"oneOf":[{"type":"string","description":"The contract's invoice reference, free text. Null when it is not set.","example":"MSA-2025-014","uniqueKey":"Data.Reference.oneOf.0","typeLabel":"string"},{"type":"null","description":"The contract's invoice reference, free text. Null when it is not set.","example":"MSA-2025-014","uniqueKey":"Data.Reference.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.Reference","typeLabel":"string | null"},"StartDate":{"type":"string","description":"Date the contract's coverage starts, a calendar date.","format":"date","uniqueKey":"Data.StartDate","typeLabel":"string\u003cdate>"},"EndDate":{"oneOf":[{"type":"string","description":"Date the contract's coverage ends, a calendar date, or null when it is open-ended.","format":"date","uniqueKey":"Data.EndDate.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","description":"Date the contract's coverage ends, a calendar date, or null when it is open-ended.","format":"date","uniqueKey":"Data.EndDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.EndDate","typeLabel":"string\u003cdate> | null"},"RepeatPeriod":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.RepeatPeriod.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.RepeatPeriod.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.RepeatPeriod","typeLabel":"object"},"DaysBeforeInvoiceCreation":{"oneOf":[{"type":"integer","description":"How many days before the billing period ends the invoice is generated.","format":"int32","uniqueKey":"Data.DaysBeforeInvoiceCreation.oneOf.0","typeLabel":"integer\u003cint32>"},{"type":"null","description":"How many days before the billing period ends the invoice is generated.","format":"int32","uniqueKey":"Data.DaysBeforeInvoiceCreation.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.DaysBeforeInvoiceCreation","typeLabel":"integer\u003cint32> | null"},"InvoiceDue":{"type":"integer","description":"How many days the client has to pay once invoiced.","format":"int64","uniqueKey":"Data.InvoiceDue","typeLabel":"integer\u003cint64>"},"AutoApproveAndSend":{"oneOf":[{"type":"boolean","description":"Whether an invoice raised from this contract is approved and sent automatically.","uniqueKey":"Data.AutoApproveAndSend.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether an invoice raised from this contract is approved and sent automatically.","uniqueKey":"Data.AutoApproveAndSend.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.AutoApproveAndSend","typeLabel":"boolean | null"},"Contacts":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.Contacts.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.Contacts.items.[INDEX].Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.Contacts.items.[INDEX]","typeLabel":"object"},"description":"The contacts who can auto-approve invoices on this contract. Empty when none are set.","uniqueKey":"Data.Contacts","typeLabel":"object[]"},"RecurringAmount":{"type":"number","description":"Total recurring amount the contract bills each period, before tax.","format":"double","example":6870,"uniqueKey":"Data.RecurringAmount","typeLabel":"number\u003cdouble>"},"RecurringCost":{"type":"number","description":"Total recurring cost of the contract's recurring products each period.","format":"double","example":2981.36,"uniqueKey":"Data.RecurringCost","typeLabel":"number\u003cdouble>"},"ServiceLines":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Identifier of the service line. The same value a time entry's ServiceLineId carries.","format":"int64","example":88214,"uniqueKey":"Data.ServiceLines.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Name of the service line.","uniqueKey":"Data.ServiceLines.items.[INDEX].Name","typeLabel":"string"},"CreatedOn":{"oneOf":[{"type":"string","description":"When the service line was created, in UTC.","format":"date-time","uniqueKey":"Data.ServiceLines.items.[INDEX].CreatedOn.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the service line was created, in UTC.","format":"date-time","uniqueKey":"Data.ServiceLines.items.[INDEX].CreatedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].CreatedOn","typeLabel":"string\u003cdate-time> | null"},"UpdatedOn":{"oneOf":[{"type":"string","description":"When the service line was last changed, in UTC. Null when it has never been changed.","format":"date-time","uniqueKey":"Data.ServiceLines.items.[INDEX].UpdatedOn.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the service line was last changed, in UTC. Null when it has never been changed.","format":"date-time","uniqueKey":"Data.ServiceLines.items.[INDEX].UpdatedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].UpdatedOn","typeLabel":"string\u003cdate-time> | null"},"LaborTerms":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LaborTerms.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LaborTerms.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LaborTerms","typeLabel":"object"},"WorkTypes":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].WorkTypes.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkTypes.items.[INDEX].Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkTypes.items.[INDEX]","typeLabel":"object"},"description":"The work types this line applies to. Only recorded for an Unlimited Hours line; empty for\r\nevery other `LaborTerms` today, since the other labor terms carry no work-type\r\nselection of their own in storage.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkTypes","typeLabel":"object[]"},"WorkRoles":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].WorkRoles.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkRoles.items.[INDEX].Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkRoles.items.[INDEX]","typeLabel":"object"},"description":"Same coverage as `WorkTypes`, for billing roles.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkRoles","typeLabel":"object[]"},"UnlimitedHoursDetails":{"type":"object","properties":{"AutoApprove":{"oneOf":[{"type":"boolean","description":"Whether time logged against this line is approved automatically.","uniqueKey":"Data.ServiceLines.items.[INDEX].UnlimitedHoursDetails.AutoApprove.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether time logged against this line is approved automatically.","uniqueKey":"Data.ServiceLines.items.[INDEX].UnlimitedHoursDetails.AutoApprove.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].UnlimitedHoursDetails.AutoApprove","typeLabel":"boolean | null"}},"additionalProperties":false,"uniqueKey":"Data.ServiceLines.items.[INDEX].UnlimitedHoursDetails","typeLabel":"object"},"PerHourDetails":{"type":"object","properties":{"RateType":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].PerHourDetails.RateType.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].PerHourDetails.RateType.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].PerHourDetails.RateType","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"Data.ServiceLines.items.[INDEX].PerHourDetails","typeLabel":"object"},"LimitedHoursDetails":{"type":"object","properties":{"RateType":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LimitedHoursDetails.RateType.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LimitedHoursDetails.RateType.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LimitedHoursDetails.RateType","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"Data.ServiceLines.items.[INDEX].LimitedHoursDetails","typeLabel":"object"},"BlockHoursDetails":{"type":"object","properties":{"Balance":{"oneOf":[{"type":"number","description":"The block's total balance, in hours.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.Balance.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"The block's total balance, in hours.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.Balance.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.Balance","typeLabel":"number\u003cdouble> | null"},"WarningThreshold":{"oneOf":[{"type":"number","description":"Hours remaining before a low-balance warning is raised on the block.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.WarningThreshold.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Hours remaining before a low-balance warning is raised on the block.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.WarningThreshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.WarningThreshold","typeLabel":"number\u003cdouble> | null"},"OverrunThreshold":{"oneOf":[{"type":"number","description":"How far past zero the block may run before it is considered overrun.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.OverrunThreshold.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"How far past zero the block may run before it is considered overrun.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.OverrunThreshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.OverrunThreshold","typeLabel":"number\u003cdouble> | null"}},"additionalProperties":false,"uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails","typeLabel":"object"},"RecurringAmount":{"type":"number","description":"Recurring amount this service line bills each period, before tax.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].RecurringAmount","typeLabel":"number\u003cdouble>"},"RecurringCost":{"type":"number","description":"Recurring cost of this service line's recurring products each period.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].RecurringCost","typeLabel":"number\u003cdouble>"},"LineItems":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Identifier of this line.","format":"int64","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"ItemId":{"oneOf":[{"type":"string","description":"The catalog item this line bills, resolving against `GET /v1/items`. Null for a line\r\nthat does not reference a catalog item.","format":"uuid","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","description":"The catalog item this line bills, resolving against `GET /v1/items`. Null for a line\r\nthat does not reference a catalog item.","format":"uuid","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemId.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemId","typeLabel":"string\u003cuuid> | null"},"ItemType":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemType.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemType.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemType","typeLabel":"object"},"Name":{"type":"string","description":"Name of the line as billed.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Name","typeLabel":"string"},"Description":{"oneOf":[{"type":"string","description":"Description of the line as billed, if any.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Description of the line as billed, if any.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Description.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Description","typeLabel":"string | null"},"Quantity":{"oneOf":[{"type":"number","description":"Quantity billed.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Quantity.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Quantity billed.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Quantity.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Quantity","typeLabel":"number\u003cdouble> | null"},"Cost":{"oneOf":[{"type":"number","description":"Unit cost of the line.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Cost.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Unit cost of the line.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Cost.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Cost","typeLabel":"number\u003cdouble> | null"},"UnitPrice":{"type":"number","description":"Unit price charged.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].UnitPrice","typeLabel":"number\u003cdouble>"},"DiscountPercent":{"oneOf":[{"type":"number","description":"Discount percentage applied to this line, 0-100.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].DiscountPercent.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Discount percentage applied to this line, 0-100.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].DiscountPercent.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].DiscountPercent","typeLabel":"number\u003cdouble> | null"},"StartDate":{"oneOf":[{"type":"string","description":"Date this line's coverage starts, if it is date-scoped. A calendar date.","format":"date","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].StartDate.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","description":"Date this line's coverage starts, if it is date-scoped. A calendar date.","format":"date","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].StartDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].StartDate","typeLabel":"string\u003cdate> | null"},"EndDate":{"oneOf":[{"type":"string","description":"Date this line's coverage ends, if it is date-scoped. A calendar date.","format":"date","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].EndDate.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","description":"Date this line's coverage ends, if it is date-scoped. A calendar date.","format":"date","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].EndDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].EndDate","typeLabel":"string\u003cdate> | null"},"Tax":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Tax.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Tax.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Tax","typeLabel":"object"},"Amount":{"type":"number","description":"Line total after discount, before tax.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Amount","typeLabel":"number\u003cdouble>"},"TaxAmount":{"oneOf":[{"type":"number","description":"Tax on this line.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].TaxAmount.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Tax on this line.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].TaxAmount.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].TaxAmount","typeLabel":"number\u003cdouble> | null"},"BillableStatus":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].BillableStatus.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].BillableStatus.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].BillableStatus","typeLabel":"object"}},"additionalProperties":false,"description":"One product, bundle or labor charge billed on a contract's service line.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX]","typeLabel":"object"},"description":"The actual products/labor billed on this line. Empty array when nothing is billed on it\r\nyet; never null.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems","typeLabel":"object[]"}},"additionalProperties":false,"description":"One service line inside a contract, with the products/labor billed on it.","uniqueKey":"Data.ServiceLines.items.[INDEX]","typeLabel":"object"},"description":"The contract's service lines. Empty when the contract has none; never null.","uniqueKey":"Data.ServiceLines","typeLabel":"object[]"}},"additionalProperties":false,"description":"Everything about one contract: the client and locations it covers, its billing schedule, and\r\neach service line with the actual products/labor billed on it.","uniqueKey":"Data","typeLabel":"object"},"DataContext":{"oneOf":[{"type":"object","additionalProperties":false,"example":null,"uniqueKey":"DataContext.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":false,"example":null,"uniqueKey":"DataContext.oneOf.1","typeLabel":"null"}],"uniqueKey":"DataContext","typeLabel":"object | null"},"Notifications":{"type":"array","items":{"type":"object","properties":{"Code":{"pattern":"^[0-9]{6}$","type":"string","description":"6-digit MMTTNN error code. See the Public API error-code registry.","example":"070101","uniqueKey":"Notifications.items.[INDEX].Code","typeLabel":"string"},"Message":{"type":"string","uniqueKey":"Notifications.items.[INDEX].Message","typeLabel":"string"},"PropertyName":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].PropertyName","typeLabel":"string | null"},"ActionHint":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].ActionHint","typeLabel":"string | null"},"DocUrl":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].DocUrl","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"Notifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"Notifications","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"StatusCode":100,"IsSuccess":true,"Data":{"Id":4021,"Name":"All Labor Terms Example","Status":{"Id":1,"Name":"\u003cstring>"},"Client":{"Id":1,"Name":"\u003cstring>"},"LocationIds":[123],"IsForAllLocations":true,"CreatedOn":"2023-11-07T05:31:56Z","UpdatedOn":"2023-11-07T05:31:56Z","Reference":"MSA-2025-014","StartDate":"2023-12-25","EndDate":"2023-12-25","RepeatPeriod":{"Id":1,"Name":"\u003cstring>"},"DaysBeforeInvoiceCreation":123,"InvoiceDue":123,"AutoApproveAndSend":true,"Contacts":[{"Id":1,"Name":"\u003cstring>"}],"RecurringAmount":6870,"RecurringCost":2981.36,"ServiceLines":[{"Id":88214,"Name":"\u003cstring>","CreatedOn":"2023-11-07T05:31:56Z","UpdatedOn":"2023-11-07T05:31:56Z","LaborTerms":{"Id":1,"Name":"\u003cstring>"},"WorkTypes":[{"Id":1,"Name":"\u003cstring>"}],"WorkRoles":[{"Id":1,"Name":"\u003cstring>"}],"UnlimitedHoursDetails":{"AutoApprove":true},"PerHourDetails":{"RateType":{"Id":1,"Name":"\u003cstring>"}},"LimitedHoursDetails":{"RateType":{"Id":1,"Name":"\u003cstring>"}},"BlockHoursDetails":{"Balance":123,"WarningThreshold":123,"OverrunThreshold":123},"RecurringAmount":123,"RecurringCost":123,"LineItems":[{"Id":123,"ItemId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","ItemType":{"Id":1,"Name":"\u003cstring>"},"Name":"\u003cstring>","Description":"\u003cstring>","Quantity":123,"Cost":123,"UnitPrice":123,"DiscountPercent":123,"StartDate":"2023-12-25","EndDate":"2023-12-25","Tax":{"Id":1,"Name":"\u003cstring>"},"Amount":123,"TaxAmount":123,"BillableStatus":{"Id":1,"Name":"\u003cstring>"}}]}]},"DataContext":null,"Notifications":[{"Code":"070101","Message":"\u003cstring>","PropertyName":"\u003cstring>","ActionHint":"\u003cstring>","DocUrl":"\u003cstring>"}]}}},"exampleType":"generated"},"application/json":{"schema":{"type":"object","properties":{"StatusCode":{"enum":[100,101,102,103,200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,423,424,426,428,429,431,451,500,501,502,503,504,505,506,507,508,510,511],"type":"integer","format":"int32","uniqueKey":"StatusCode","typeLabel":"enum\u003cinteger>"},"IsSuccess":{"type":"boolean","uniqueKey":"IsSuccess","typeLabel":"boolean"},"Data":{"type":"object","properties":{"Id":{"type":"integer","description":"Identifier of the contract.","format":"int64","example":4021,"uniqueKey":"Data.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Name of the contract.","example":"All Labor Terms Example","uniqueKey":"Data.Name","typeLabel":"string"},"Status":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.Status.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.Status.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.Status","typeLabel":"object"},"Client":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.Client.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.Client.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.Client","typeLabel":"object"},"LocationIds":{"type":"array","items":{"type":"integer","format":"int64","uniqueKey":"Data.LocationIds.items.[INDEX]","typeLabel":"integer\u003cint64>"},"description":"The client locations the contract is scoped to, as location ids. Empty\r\nwhen the contract covers every one of the client's locations (see\r\n`IsForAllLocations`) as well as when a location-scoped contract's rows have all\r\nbeen removed; never null.","uniqueKey":"Data.LocationIds","typeLabel":"integer\u003cint64>[]"},"IsForAllLocations":{"type":"boolean","description":"Whether the contract covers every one of the client's locations rather than the specific\r\nones named in `LocationIds`. When true, `LocationIds` is empty by\r\ndefinition.","uniqueKey":"Data.IsForAllLocations","typeLabel":"boolean"},"CreatedOn":{"oneOf":[{"type":"string","description":"When the contract was created, in UTC.","format":"date-time","uniqueKey":"Data.CreatedOn.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the contract was created, in UTC.","format":"date-time","uniqueKey":"Data.CreatedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.CreatedOn","typeLabel":"string\u003cdate-time> | null"},"UpdatedOn":{"oneOf":[{"type":"string","description":"When the contract was last changed, in UTC. Null when it has never been changed.","format":"date-time","uniqueKey":"Data.UpdatedOn.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the contract was last changed, in UTC. Null when it has never been changed.","format":"date-time","uniqueKey":"Data.UpdatedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.UpdatedOn","typeLabel":"string\u003cdate-time> | null"},"Reference":{"oneOf":[{"type":"string","description":"The contract's invoice reference, free text. Null when it is not set.","example":"MSA-2025-014","uniqueKey":"Data.Reference.oneOf.0","typeLabel":"string"},{"type":"null","description":"The contract's invoice reference, free text. Null when it is not set.","example":"MSA-2025-014","uniqueKey":"Data.Reference.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.Reference","typeLabel":"string | null"},"StartDate":{"type":"string","description":"Date the contract's coverage starts, a calendar date.","format":"date","uniqueKey":"Data.StartDate","typeLabel":"string\u003cdate>"},"EndDate":{"oneOf":[{"type":"string","description":"Date the contract's coverage ends, a calendar date, or null when it is open-ended.","format":"date","uniqueKey":"Data.EndDate.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","description":"Date the contract's coverage ends, a calendar date, or null when it is open-ended.","format":"date","uniqueKey":"Data.EndDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.EndDate","typeLabel":"string\u003cdate> | null"},"RepeatPeriod":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.RepeatPeriod.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.RepeatPeriod.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.RepeatPeriod","typeLabel":"object"},"DaysBeforeInvoiceCreation":{"oneOf":[{"type":"integer","description":"How many days before the billing period ends the invoice is generated.","format":"int32","uniqueKey":"Data.DaysBeforeInvoiceCreation.oneOf.0","typeLabel":"integer\u003cint32>"},{"type":"null","description":"How many days before the billing period ends the invoice is generated.","format":"int32","uniqueKey":"Data.DaysBeforeInvoiceCreation.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.DaysBeforeInvoiceCreation","typeLabel":"integer\u003cint32> | null"},"InvoiceDue":{"type":"integer","description":"How many days the client has to pay once invoiced.","format":"int64","uniqueKey":"Data.InvoiceDue","typeLabel":"integer\u003cint64>"},"AutoApproveAndSend":{"oneOf":[{"type":"boolean","description":"Whether an invoice raised from this contract is approved and sent automatically.","uniqueKey":"Data.AutoApproveAndSend.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether an invoice raised from this contract is approved and sent automatically.","uniqueKey":"Data.AutoApproveAndSend.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.AutoApproveAndSend","typeLabel":"boolean | null"},"Contacts":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.Contacts.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.Contacts.items.[INDEX].Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.Contacts.items.[INDEX]","typeLabel":"object"},"description":"The contacts who can auto-approve invoices on this contract. Empty when none are set.","uniqueKey":"Data.Contacts","typeLabel":"object[]"},"RecurringAmount":{"type":"number","description":"Total recurring amount the contract bills each period, before tax.","format":"double","example":6870,"uniqueKey":"Data.RecurringAmount","typeLabel":"number\u003cdouble>"},"RecurringCost":{"type":"number","description":"Total recurring cost of the contract's recurring products each period.","format":"double","example":2981.36,"uniqueKey":"Data.RecurringCost","typeLabel":"number\u003cdouble>"},"ServiceLines":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Identifier of the service line. The same value a time entry's ServiceLineId carries.","format":"int64","example":88214,"uniqueKey":"Data.ServiceLines.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Name of the service line.","uniqueKey":"Data.ServiceLines.items.[INDEX].Name","typeLabel":"string"},"CreatedOn":{"oneOf":[{"type":"string","description":"When the service line was created, in UTC.","format":"date-time","uniqueKey":"Data.ServiceLines.items.[INDEX].CreatedOn.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the service line was created, in UTC.","format":"date-time","uniqueKey":"Data.ServiceLines.items.[INDEX].CreatedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].CreatedOn","typeLabel":"string\u003cdate-time> | null"},"UpdatedOn":{"oneOf":[{"type":"string","description":"When the service line was last changed, in UTC. Null when it has never been changed.","format":"date-time","uniqueKey":"Data.ServiceLines.items.[INDEX].UpdatedOn.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the service line was last changed, in UTC. Null when it has never been changed.","format":"date-time","uniqueKey":"Data.ServiceLines.items.[INDEX].UpdatedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].UpdatedOn","typeLabel":"string\u003cdate-time> | null"},"LaborTerms":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LaborTerms.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LaborTerms.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LaborTerms","typeLabel":"object"},"WorkTypes":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].WorkTypes.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkTypes.items.[INDEX].Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkTypes.items.[INDEX]","typeLabel":"object"},"description":"The work types this line applies to. Only recorded for an Unlimited Hours line; empty for\r\nevery other `LaborTerms` today, since the other labor terms carry no work-type\r\nselection of their own in storage.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkTypes","typeLabel":"object[]"},"WorkRoles":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].WorkRoles.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkRoles.items.[INDEX].Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkRoles.items.[INDEX]","typeLabel":"object"},"description":"Same coverage as `WorkTypes`, for billing roles.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkRoles","typeLabel":"object[]"},"UnlimitedHoursDetails":{"type":"object","properties":{"AutoApprove":{"oneOf":[{"type":"boolean","description":"Whether time logged against this line is approved automatically.","uniqueKey":"Data.ServiceLines.items.[INDEX].UnlimitedHoursDetails.AutoApprove.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether time logged against this line is approved automatically.","uniqueKey":"Data.ServiceLines.items.[INDEX].UnlimitedHoursDetails.AutoApprove.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].UnlimitedHoursDetails.AutoApprove","typeLabel":"boolean | null"}},"additionalProperties":false,"uniqueKey":"Data.ServiceLines.items.[INDEX].UnlimitedHoursDetails","typeLabel":"object"},"PerHourDetails":{"type":"object","properties":{"RateType":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].PerHourDetails.RateType.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].PerHourDetails.RateType.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].PerHourDetails.RateType","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"Data.ServiceLines.items.[INDEX].PerHourDetails","typeLabel":"object"},"LimitedHoursDetails":{"type":"object","properties":{"RateType":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LimitedHoursDetails.RateType.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LimitedHoursDetails.RateType.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LimitedHoursDetails.RateType","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"Data.ServiceLines.items.[INDEX].LimitedHoursDetails","typeLabel":"object"},"BlockHoursDetails":{"type":"object","properties":{"Balance":{"oneOf":[{"type":"number","description":"The block's total balance, in hours.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.Balance.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"The block's total balance, in hours.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.Balance.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.Balance","typeLabel":"number\u003cdouble> | null"},"WarningThreshold":{"oneOf":[{"type":"number","description":"Hours remaining before a low-balance warning is raised on the block.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.WarningThreshold.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Hours remaining before a low-balance warning is raised on the block.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.WarningThreshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.WarningThreshold","typeLabel":"number\u003cdouble> | null"},"OverrunThreshold":{"oneOf":[{"type":"number","description":"How far past zero the block may run before it is considered overrun.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.OverrunThreshold.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"How far past zero the block may run before it is considered overrun.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.OverrunThreshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.OverrunThreshold","typeLabel":"number\u003cdouble> | null"}},"additionalProperties":false,"uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails","typeLabel":"object"},"RecurringAmount":{"type":"number","description":"Recurring amount this service line bills each period, before tax.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].RecurringAmount","typeLabel":"number\u003cdouble>"},"RecurringCost":{"type":"number","description":"Recurring cost of this service line's recurring products each period.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].RecurringCost","typeLabel":"number\u003cdouble>"},"LineItems":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Identifier of this line.","format":"int64","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"ItemId":{"oneOf":[{"type":"string","description":"The catalog item this line bills, resolving against `GET /v1/items`. Null for a line\r\nthat does not reference a catalog item.","format":"uuid","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","description":"The catalog item this line bills, resolving against `GET /v1/items`. Null for a line\r\nthat does not reference a catalog item.","format":"uuid","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemId.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemId","typeLabel":"string\u003cuuid> | null"},"ItemType":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemType.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemType.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemType","typeLabel":"object"},"Name":{"type":"string","description":"Name of the line as billed.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Name","typeLabel":"string"},"Description":{"oneOf":[{"type":"string","description":"Description of the line as billed, if any.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Description of the line as billed, if any.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Description.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Description","typeLabel":"string | null"},"Quantity":{"oneOf":[{"type":"number","description":"Quantity billed.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Quantity.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Quantity billed.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Quantity.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Quantity","typeLabel":"number\u003cdouble> | null"},"Cost":{"oneOf":[{"type":"number","description":"Unit cost of the line.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Cost.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Unit cost of the line.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Cost.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Cost","typeLabel":"number\u003cdouble> | null"},"UnitPrice":{"type":"number","description":"Unit price charged.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].UnitPrice","typeLabel":"number\u003cdouble>"},"DiscountPercent":{"oneOf":[{"type":"number","description":"Discount percentage applied to this line, 0-100.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].DiscountPercent.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Discount percentage applied to this line, 0-100.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].DiscountPercent.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].DiscountPercent","typeLabel":"number\u003cdouble> | null"},"StartDate":{"oneOf":[{"type":"string","description":"Date this line's coverage starts, if it is date-scoped. A calendar date.","format":"date","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].StartDate.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","description":"Date this line's coverage starts, if it is date-scoped. A calendar date.","format":"date","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].StartDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].StartDate","typeLabel":"string\u003cdate> | null"},"EndDate":{"oneOf":[{"type":"string","description":"Date this line's coverage ends, if it is date-scoped. A calendar date.","format":"date","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].EndDate.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","description":"Date this line's coverage ends, if it is date-scoped. A calendar date.","format":"date","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].EndDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].EndDate","typeLabel":"string\u003cdate> | null"},"Tax":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Tax.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Tax.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Tax","typeLabel":"object"},"Amount":{"type":"number","description":"Line total after discount, before tax.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Amount","typeLabel":"number\u003cdouble>"},"TaxAmount":{"oneOf":[{"type":"number","description":"Tax on this line.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].TaxAmount.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Tax on this line.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].TaxAmount.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].TaxAmount","typeLabel":"number\u003cdouble> | null"},"BillableStatus":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].BillableStatus.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].BillableStatus.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].BillableStatus","typeLabel":"object"}},"additionalProperties":false,"description":"One product, bundle or labor charge billed on a contract's service line.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX]","typeLabel":"object"},"description":"The actual products/labor billed on this line. Empty array when nothing is billed on it\r\nyet; never null.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems","typeLabel":"object[]"}},"additionalProperties":false,"description":"One service line inside a contract, with the products/labor billed on it.","uniqueKey":"Data.ServiceLines.items.[INDEX]","typeLabel":"object"},"description":"The contract's service lines. Empty when the contract has none; never null.","uniqueKey":"Data.ServiceLines","typeLabel":"object[]"}},"additionalProperties":false,"description":"Everything about one contract: the client and locations it covers, its billing schedule, and\r\neach service line with the actual products/labor billed on it.","uniqueKey":"Data","typeLabel":"object"},"DataContext":{"oneOf":[{"type":"object","additionalProperties":false,"example":null,"uniqueKey":"DataContext.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":false,"example":null,"uniqueKey":"DataContext.oneOf.1","typeLabel":"null"}],"uniqueKey":"DataContext","typeLabel":"object | null"},"Notifications":{"type":"array","items":{"type":"object","properties":{"Code":{"pattern":"^[0-9]{6}$","type":"string","description":"6-digit MMTTNN error code. See the Public API error-code registry.","example":"070101","uniqueKey":"Notifications.items.[INDEX].Code","typeLabel":"string"},"Message":{"type":"string","uniqueKey":"Notifications.items.[INDEX].Message","typeLabel":"string"},"PropertyName":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].PropertyName","typeLabel":"string | null"},"ActionHint":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].ActionHint","typeLabel":"string | null"},"DocUrl":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].DocUrl","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"Notifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"Notifications","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"StatusCode":100,"IsSuccess":true,"Data":{"Id":4021,"Name":"All Labor Terms Example","Status":{"Id":1,"Name":"\u003cstring>"},"Client":{"Id":1,"Name":"\u003cstring>"},"LocationIds":[123],"IsForAllLocations":true,"CreatedOn":"2023-11-07T05:31:56Z","UpdatedOn":"2023-11-07T05:31:56Z","Reference":"MSA-2025-014","StartDate":"2023-12-25","EndDate":"2023-12-25","RepeatPeriod":{"Id":1,"Name":"\u003cstring>"},"DaysBeforeInvoiceCreation":123,"InvoiceDue":123,"AutoApproveAndSend":true,"Contacts":[{"Id":1,"Name":"\u003cstring>"}],"RecurringAmount":6870,"RecurringCost":2981.36,"ServiceLines":[{"Id":88214,"Name":"\u003cstring>","CreatedOn":"2023-11-07T05:31:56Z","UpdatedOn":"2023-11-07T05:31:56Z","LaborTerms":{"Id":1,"Name":"\u003cstring>"},"WorkTypes":[{"Id":1,"Name":"\u003cstring>"}],"WorkRoles":[{"Id":1,"Name":"\u003cstring>"}],"UnlimitedHoursDetails":{"AutoApprove":true},"PerHourDetails":{"RateType":{"Id":1,"Name":"\u003cstring>"}},"LimitedHoursDetails":{"RateType":{"Id":1,"Name":"\u003cstring>"}},"BlockHoursDetails":{"Balance":123,"WarningThreshold":123,"OverrunThreshold":123},"RecurringAmount":123,"RecurringCost":123,"LineItems":[{"Id":123,"ItemId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","ItemType":{"Id":1,"Name":"\u003cstring>"},"Name":"\u003cstring>","Description":"\u003cstring>","Quantity":123,"Cost":123,"UnitPrice":123,"DiscountPercent":123,"StartDate":"2023-12-25","EndDate":"2023-12-25","Tax":{"Id":1,"Name":"\u003cstring>"},"Amount":123,"TaxAmount":123,"BillableStatus":{"Id":1,"Name":"\u003cstring>"}}]}]},"DataContext":null,"Notifications":[{"Code":"070101","Message":"\u003cstring>","PropertyName":"\u003cstring>","ActionHint":"\u003cstring>","DocUrl":"\u003cstring>"}]}}},"exampleType":"generated"},"text/json":{"schema":{"type":"object","properties":{"StatusCode":{"enum":[100,101,102,103,200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,423,424,426,428,429,431,451,500,501,502,503,504,505,506,507,508,510,511],"type":"integer","format":"int32","uniqueKey":"StatusCode","typeLabel":"enum\u003cinteger>"},"IsSuccess":{"type":"boolean","uniqueKey":"IsSuccess","typeLabel":"boolean"},"Data":{"type":"object","properties":{"Id":{"type":"integer","description":"Identifier of the contract.","format":"int64","example":4021,"uniqueKey":"Data.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Name of the contract.","example":"All Labor Terms Example","uniqueKey":"Data.Name","typeLabel":"string"},"Status":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.Status.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.Status.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.Status","typeLabel":"object"},"Client":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.Client.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.Client.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.Client","typeLabel":"object"},"LocationIds":{"type":"array","items":{"type":"integer","format":"int64","uniqueKey":"Data.LocationIds.items.[INDEX]","typeLabel":"integer\u003cint64>"},"description":"The client locations the contract is scoped to, as location ids. Empty\r\nwhen the contract covers every one of the client's locations (see\r\n`IsForAllLocations`) as well as when a location-scoped contract's rows have all\r\nbeen removed; never null.","uniqueKey":"Data.LocationIds","typeLabel":"integer\u003cint64>[]"},"IsForAllLocations":{"type":"boolean","description":"Whether the contract covers every one of the client's locations rather than the specific\r\nones named in `LocationIds`. When true, `LocationIds` is empty by\r\ndefinition.","uniqueKey":"Data.IsForAllLocations","typeLabel":"boolean"},"CreatedOn":{"oneOf":[{"type":"string","description":"When the contract was created, in UTC.","format":"date-time","uniqueKey":"Data.CreatedOn.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the contract was created, in UTC.","format":"date-time","uniqueKey":"Data.CreatedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.CreatedOn","typeLabel":"string\u003cdate-time> | null"},"UpdatedOn":{"oneOf":[{"type":"string","description":"When the contract was last changed, in UTC. Null when it has never been changed.","format":"date-time","uniqueKey":"Data.UpdatedOn.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the contract was last changed, in UTC. Null when it has never been changed.","format":"date-time","uniqueKey":"Data.UpdatedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.UpdatedOn","typeLabel":"string\u003cdate-time> | null"},"Reference":{"oneOf":[{"type":"string","description":"The contract's invoice reference, free text. Null when it is not set.","example":"MSA-2025-014","uniqueKey":"Data.Reference.oneOf.0","typeLabel":"string"},{"type":"null","description":"The contract's invoice reference, free text. Null when it is not set.","example":"MSA-2025-014","uniqueKey":"Data.Reference.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.Reference","typeLabel":"string | null"},"StartDate":{"type":"string","description":"Date the contract's coverage starts, a calendar date.","format":"date","uniqueKey":"Data.StartDate","typeLabel":"string\u003cdate>"},"EndDate":{"oneOf":[{"type":"string","description":"Date the contract's coverage ends, a calendar date, or null when it is open-ended.","format":"date","uniqueKey":"Data.EndDate.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","description":"Date the contract's coverage ends, a calendar date, or null when it is open-ended.","format":"date","uniqueKey":"Data.EndDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.EndDate","typeLabel":"string\u003cdate> | null"},"RepeatPeriod":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.RepeatPeriod.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.RepeatPeriod.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.RepeatPeriod","typeLabel":"object"},"DaysBeforeInvoiceCreation":{"oneOf":[{"type":"integer","description":"How many days before the billing period ends the invoice is generated.","format":"int32","uniqueKey":"Data.DaysBeforeInvoiceCreation.oneOf.0","typeLabel":"integer\u003cint32>"},{"type":"null","description":"How many days before the billing period ends the invoice is generated.","format":"int32","uniqueKey":"Data.DaysBeforeInvoiceCreation.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.DaysBeforeInvoiceCreation","typeLabel":"integer\u003cint32> | null"},"InvoiceDue":{"type":"integer","description":"How many days the client has to pay once invoiced.","format":"int64","uniqueKey":"Data.InvoiceDue","typeLabel":"integer\u003cint64>"},"AutoApproveAndSend":{"oneOf":[{"type":"boolean","description":"Whether an invoice raised from this contract is approved and sent automatically.","uniqueKey":"Data.AutoApproveAndSend.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether an invoice raised from this contract is approved and sent automatically.","uniqueKey":"Data.AutoApproveAndSend.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.AutoApproveAndSend","typeLabel":"boolean | null"},"Contacts":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.Contacts.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.Contacts.items.[INDEX].Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.Contacts.items.[INDEX]","typeLabel":"object"},"description":"The contacts who can auto-approve invoices on this contract. Empty when none are set.","uniqueKey":"Data.Contacts","typeLabel":"object[]"},"RecurringAmount":{"type":"number","description":"Total recurring amount the contract bills each period, before tax.","format":"double","example":6870,"uniqueKey":"Data.RecurringAmount","typeLabel":"number\u003cdouble>"},"RecurringCost":{"type":"number","description":"Total recurring cost of the contract's recurring products each period.","format":"double","example":2981.36,"uniqueKey":"Data.RecurringCost","typeLabel":"number\u003cdouble>"},"ServiceLines":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Identifier of the service line. The same value a time entry's ServiceLineId carries.","format":"int64","example":88214,"uniqueKey":"Data.ServiceLines.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Name of the service line.","uniqueKey":"Data.ServiceLines.items.[INDEX].Name","typeLabel":"string"},"CreatedOn":{"oneOf":[{"type":"string","description":"When the service line was created, in UTC.","format":"date-time","uniqueKey":"Data.ServiceLines.items.[INDEX].CreatedOn.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the service line was created, in UTC.","format":"date-time","uniqueKey":"Data.ServiceLines.items.[INDEX].CreatedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].CreatedOn","typeLabel":"string\u003cdate-time> | null"},"UpdatedOn":{"oneOf":[{"type":"string","description":"When the service line was last changed, in UTC. Null when it has never been changed.","format":"date-time","uniqueKey":"Data.ServiceLines.items.[INDEX].UpdatedOn.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the service line was last changed, in UTC. Null when it has never been changed.","format":"date-time","uniqueKey":"Data.ServiceLines.items.[INDEX].UpdatedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].UpdatedOn","typeLabel":"string\u003cdate-time> | null"},"LaborTerms":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LaborTerms.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LaborTerms.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LaborTerms","typeLabel":"object"},"WorkTypes":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].WorkTypes.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkTypes.items.[INDEX].Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkTypes.items.[INDEX]","typeLabel":"object"},"description":"The work types this line applies to. Only recorded for an Unlimited Hours line; empty for\r\nevery other `LaborTerms` today, since the other labor terms carry no work-type\r\nselection of their own in storage.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkTypes","typeLabel":"object[]"},"WorkRoles":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].WorkRoles.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkRoles.items.[INDEX].Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkRoles.items.[INDEX]","typeLabel":"object"},"description":"Same coverage as `WorkTypes`, for billing roles.","uniqueKey":"Data.ServiceLines.items.[INDEX].WorkRoles","typeLabel":"object[]"},"UnlimitedHoursDetails":{"type":"object","properties":{"AutoApprove":{"oneOf":[{"type":"boolean","description":"Whether time logged against this line is approved automatically.","uniqueKey":"Data.ServiceLines.items.[INDEX].UnlimitedHoursDetails.AutoApprove.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether time logged against this line is approved automatically.","uniqueKey":"Data.ServiceLines.items.[INDEX].UnlimitedHoursDetails.AutoApprove.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].UnlimitedHoursDetails.AutoApprove","typeLabel":"boolean | null"}},"additionalProperties":false,"uniqueKey":"Data.ServiceLines.items.[INDEX].UnlimitedHoursDetails","typeLabel":"object"},"PerHourDetails":{"type":"object","properties":{"RateType":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].PerHourDetails.RateType.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].PerHourDetails.RateType.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].PerHourDetails.RateType","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"Data.ServiceLines.items.[INDEX].PerHourDetails","typeLabel":"object"},"LimitedHoursDetails":{"type":"object","properties":{"RateType":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LimitedHoursDetails.RateType.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LimitedHoursDetails.RateType.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LimitedHoursDetails.RateType","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"Data.ServiceLines.items.[INDEX].LimitedHoursDetails","typeLabel":"object"},"BlockHoursDetails":{"type":"object","properties":{"Balance":{"oneOf":[{"type":"number","description":"The block's total balance, in hours.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.Balance.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"The block's total balance, in hours.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.Balance.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.Balance","typeLabel":"number\u003cdouble> | null"},"WarningThreshold":{"oneOf":[{"type":"number","description":"Hours remaining before a low-balance warning is raised on the block.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.WarningThreshold.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Hours remaining before a low-balance warning is raised on the block.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.WarningThreshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.WarningThreshold","typeLabel":"number\u003cdouble> | null"},"OverrunThreshold":{"oneOf":[{"type":"number","description":"How far past zero the block may run before it is considered overrun.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.OverrunThreshold.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"How far past zero the block may run before it is considered overrun.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.OverrunThreshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails.OverrunThreshold","typeLabel":"number\u003cdouble> | null"}},"additionalProperties":false,"uniqueKey":"Data.ServiceLines.items.[INDEX].BlockHoursDetails","typeLabel":"object"},"RecurringAmount":{"type":"number","description":"Recurring amount this service line bills each period, before tax.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].RecurringAmount","typeLabel":"number\u003cdouble>"},"RecurringCost":{"type":"number","description":"Recurring cost of this service line's recurring products each period.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].RecurringCost","typeLabel":"number\u003cdouble>"},"LineItems":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"integer","description":"Identifier of this line.","format":"int64","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Id","typeLabel":"integer\u003cint64>"},"ItemId":{"oneOf":[{"type":"string","description":"The catalog item this line bills, resolving against `GET /v1/items`. Null for a line\r\nthat does not reference a catalog item.","format":"uuid","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","description":"The catalog item this line bills, resolving against `GET /v1/items`. Null for a line\r\nthat does not reference a catalog item.","format":"uuid","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemId.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemId","typeLabel":"string\u003cuuid> | null"},"ItemType":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemType.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemType.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].ItemType","typeLabel":"object"},"Name":{"type":"string","description":"Name of the line as billed.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Name","typeLabel":"string"},"Description":{"oneOf":[{"type":"string","description":"Description of the line as billed, if any.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Description of the line as billed, if any.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Description.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Description","typeLabel":"string | null"},"Quantity":{"oneOf":[{"type":"number","description":"Quantity billed.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Quantity.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Quantity billed.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Quantity.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Quantity","typeLabel":"number\u003cdouble> | null"},"Cost":{"oneOf":[{"type":"number","description":"Unit cost of the line.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Cost.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Unit cost of the line.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Cost.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Cost","typeLabel":"number\u003cdouble> | null"},"UnitPrice":{"type":"number","description":"Unit price charged.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].UnitPrice","typeLabel":"number\u003cdouble>"},"DiscountPercent":{"oneOf":[{"type":"number","description":"Discount percentage applied to this line, 0-100.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].DiscountPercent.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Discount percentage applied to this line, 0-100.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].DiscountPercent.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].DiscountPercent","typeLabel":"number\u003cdouble> | null"},"StartDate":{"oneOf":[{"type":"string","description":"Date this line's coverage starts, if it is date-scoped. A calendar date.","format":"date","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].StartDate.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","description":"Date this line's coverage starts, if it is date-scoped. A calendar date.","format":"date","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].StartDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].StartDate","typeLabel":"string\u003cdate> | null"},"EndDate":{"oneOf":[{"type":"string","description":"Date this line's coverage ends, if it is date-scoped. A calendar date.","format":"date","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].EndDate.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","description":"Date this line's coverage ends, if it is date-scoped. A calendar date.","format":"date","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].EndDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].EndDate","typeLabel":"string\u003cdate> | null"},"Tax":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Tax.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Tax.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Tax","typeLabel":"object"},"Amount":{"type":"number","description":"Line total after discount, before tax.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].Amount","typeLabel":"number\u003cdouble>"},"TaxAmount":{"oneOf":[{"type":"number","description":"Tax on this line.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].TaxAmount.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","description":"Tax on this line.","format":"double","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].TaxAmount.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].TaxAmount","typeLabel":"number\u003cdouble> | null"},"BillableStatus":{"type":"object","properties":{"Id":{"type":"integer","description":"Numeric identifier of the coded value (e.g. status, priority, type, or source id).","format":"int64","example":1,"uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].BillableStatus.Id","typeLabel":"integer\u003cint64>"},"Name":{"type":"string","description":"Display name of the coded value.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].BillableStatus.Name","typeLabel":"string"}},"additionalProperties":false,"description":"A coded value, such as a status, priority, type or source, as an id and a display name.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX].BillableStatus","typeLabel":"object"}},"additionalProperties":false,"description":"One product, bundle or labor charge billed on a contract's service line.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems.items.[INDEX]","typeLabel":"object"},"description":"The actual products/labor billed on this line. Empty array when nothing is billed on it\r\nyet; never null.","uniqueKey":"Data.ServiceLines.items.[INDEX].LineItems","typeLabel":"object[]"}},"additionalProperties":false,"description":"One service line inside a contract, with the products/labor billed on it.","uniqueKey":"Data.ServiceLines.items.[INDEX]","typeLabel":"object"},"description":"The contract's service lines. Empty when the contract has none; never null.","uniqueKey":"Data.ServiceLines","typeLabel":"object[]"}},"additionalProperties":false,"description":"Everything about one contract: the client and locations it covers, its billing schedule, and\r\neach service line with the actual products/labor billed on it.","uniqueKey":"Data","typeLabel":"object"},"DataContext":{"oneOf":[{"type":"object","additionalProperties":false,"example":null,"uniqueKey":"DataContext.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":false,"example":null,"uniqueKey":"DataContext.oneOf.1","typeLabel":"null"}],"uniqueKey":"DataContext","typeLabel":"object | null"},"Notifications":{"type":"array","items":{"type":"object","properties":{"Code":{"pattern":"^[0-9]{6}$","type":"string","description":"6-digit MMTTNN error code. See the Public API error-code registry.","example":"070101","uniqueKey":"Notifications.items.[INDEX].Code","typeLabel":"string"},"Message":{"type":"string","uniqueKey":"Notifications.items.[INDEX].Message","typeLabel":"string"},"PropertyName":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].PropertyName","typeLabel":"string | null"},"ActionHint":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].ActionHint","typeLabel":"string | null"},"DocUrl":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].DocUrl","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"Notifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"Notifications","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"StatusCode":100,"IsSuccess":true,"Data":{"Id":4021,"Name":"All Labor Terms Example","Status":{"Id":1,"Name":"\u003cstring>"},"Client":{"Id":1,"Name":"\u003cstring>"},"LocationIds":[123],"IsForAllLocations":true,"CreatedOn":"2023-11-07T05:31:56Z","UpdatedOn":"2023-11-07T05:31:56Z","Reference":"MSA-2025-014","StartDate":"2023-12-25","EndDate":"2023-12-25","RepeatPeriod":{"Id":1,"Name":"\u003cstring>"},"DaysBeforeInvoiceCreation":123,"InvoiceDue":123,"AutoApproveAndSend":true,"Contacts":[{"Id":1,"Name":"\u003cstring>"}],"RecurringAmount":6870,"RecurringCost":2981.36,"ServiceLines":[{"Id":88214,"Name":"\u003cstring>","CreatedOn":"2023-11-07T05:31:56Z","UpdatedOn":"2023-11-07T05:31:56Z","LaborTerms":{"Id":1,"Name":"\u003cstring>"},"WorkTypes":[{"Id":1,"Name":"\u003cstring>"}],"WorkRoles":[{"Id":1,"Name":"\u003cstring>"}],"UnlimitedHoursDetails":{"AutoApprove":true},"PerHourDetails":{"RateType":{"Id":1,"Name":"\u003cstring>"}},"LimitedHoursDetails":{"RateType":{"Id":1,"Name":"\u003cstring>"}},"BlockHoursDetails":{"Balance":123,"WarningThreshold":123,"OverrunThreshold":123},"RecurringAmount":123,"RecurringCost":123,"LineItems":[{"Id":123,"ItemId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","ItemType":{"Id":1,"Name":"\u003cstring>"},"Name":"\u003cstring>","Description":"\u003cstring>","Quantity":123,"Cost":123,"UnitPrice":123,"DiscountPercent":123,"StartDate":"2023-12-25","EndDate":"2023-12-25","Tax":{"Id":1,"Name":"\u003cstring>"},"Amount":123,"TaxAmount":123,"BillableStatus":{"Id":1,"Name":"\u003cstring>"}}]}]},"DataContext":null,"Notifications":[{"Code":"070101","Message":"\u003cstring>","PropertyName":"\u003cstring>","ActionHint":"\u003cstring>","DocUrl":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"6462d8f1-163c-42ac-8970-f33bc00e9284":{"description":"Unauthorized","content":{"text/plain":{"schema":{"type":"object","properties":{"StatusCode":{"enum":[100,101,102,103,200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,423,424,426,428,429,431,451,500,501,502,503,504,505,506,507,508,510,511],"type":"integer","format":"int32","uniqueKey":"StatusCode","typeLabel":"enum\u003cinteger>"},"IsSuccess":{"type":"boolean","uniqueKey":"IsSuccess","typeLabel":"boolean"},"Data":{"oneOf":[{},{"type":"null","uniqueKey":"Data.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data","typeLabel":"null"},"DataContext":{"type":"object","properties":{"TraceId":{"oneOf":[{"type":"string","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"DataContext.TraceId","typeLabel":"string | null"}},"additionalProperties":false,"description":"The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest.","uniqueKey":"DataContext","typeLabel":"object"},"Notifications":{"type":"array","items":{"type":"object","properties":{"Code":{"pattern":"^[0-9]{6}$","type":"string","description":"6-digit MMTTNN error code. See the Public API error-code registry.","example":"070101","uniqueKey":"Notifications.items.[INDEX].Code","typeLabel":"string"},"Message":{"type":"string","uniqueKey":"Notifications.items.[INDEX].Message","typeLabel":"string"},"PropertyName":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].PropertyName","typeLabel":"string | null"},"ActionHint":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].ActionHint","typeLabel":"string | null"},"DocUrl":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].DocUrl","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"Notifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"Notifications","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"StatusCode":100,"IsSuccess":true,"Data":"\u003cunknown>","DataContext":{"TraceId":"\u003cstring>"},"Notifications":[{"Code":"070101","Message":"\u003cstring>","PropertyName":"\u003cstring>","ActionHint":"\u003cstring>","DocUrl":"\u003cstring>"}]}}},"exampleType":"generated"},"application/json":{"schema":{"type":"object","properties":{"StatusCode":{"enum":[100,101,102,103,200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,423,424,426,428,429,431,451,500,501,502,503,504,505,506,507,508,510,511],"type":"integer","format":"int32","uniqueKey":"StatusCode","typeLabel":"enum\u003cinteger>"},"IsSuccess":{"type":"boolean","uniqueKey":"IsSuccess","typeLabel":"boolean"},"Data":{"oneOf":[{},{"type":"null","uniqueKey":"Data.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data","typeLabel":"null"},"DataContext":{"type":"object","properties":{"TraceId":{"oneOf":[{"type":"string","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"DataContext.TraceId","typeLabel":"string | null"}},"additionalProperties":false,"description":"The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest.","uniqueKey":"DataContext","typeLabel":"object"},"Notifications":{"type":"array","items":{"type":"object","properties":{"Code":{"pattern":"^[0-9]{6}$","type":"string","description":"6-digit MMTTNN error code. See the Public API error-code registry.","example":"070101","uniqueKey":"Notifications.items.[INDEX].Code","typeLabel":"string"},"Message":{"type":"string","uniqueKey":"Notifications.items.[INDEX].Message","typeLabel":"string"},"PropertyName":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].PropertyName","typeLabel":"string | null"},"ActionHint":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].ActionHint","typeLabel":"string | null"},"DocUrl":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].DocUrl","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"Notifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"Notifications","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"StatusCode":100,"IsSuccess":true,"Data":"\u003cunknown>","DataContext":{"TraceId":"\u003cstring>"},"Notifications":[{"Code":"070101","Message":"\u003cstring>","PropertyName":"\u003cstring>","ActionHint":"\u003cstring>","DocUrl":"\u003cstring>"}]}}},"exampleType":"generated"},"text/json":{"schema":{"type":"object","properties":{"StatusCode":{"enum":[100,101,102,103,200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,423,424,426,428,429,431,451,500,501,502,503,504,505,506,507,508,510,511],"type":"integer","format":"int32","uniqueKey":"StatusCode","typeLabel":"enum\u003cinteger>"},"IsSuccess":{"type":"boolean","uniqueKey":"IsSuccess","typeLabel":"boolean"},"Data":{"oneOf":[{},{"type":"null","uniqueKey":"Data.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data","typeLabel":"null"},"DataContext":{"type":"object","properties":{"TraceId":{"oneOf":[{"type":"string","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"DataContext.TraceId","typeLabel":"string | null"}},"additionalProperties":false,"description":"The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest.","uniqueKey":"DataContext","typeLabel":"object"},"Notifications":{"type":"array","items":{"type":"object","properties":{"Code":{"pattern":"^[0-9]{6}$","type":"string","description":"6-digit MMTTNN error code. See the Public API error-code registry.","example":"070101","uniqueKey":"Notifications.items.[INDEX].Code","typeLabel":"string"},"Message":{"type":"string","uniqueKey":"Notifications.items.[INDEX].Message","typeLabel":"string"},"PropertyName":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].PropertyName","typeLabel":"string | null"},"ActionHint":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].ActionHint","typeLabel":"string | null"},"DocUrl":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].DocUrl","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"Notifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"Notifications","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"StatusCode":100,"IsSuccess":true,"Data":"\u003cunknown>","DataContext":{"TraceId":"\u003cstring>"},"Notifications":[{"Code":"070101","Message":"\u003cstring>","PropertyName":"\u003cstring>","ActionHint":"\u003cstring>","DocUrl":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"29175895-ef95-4b6e-8af3-cc4a934c1ba7":{"description":"Not Found","content":{"text/plain":{"schema":{"type":"object","properties":{"StatusCode":{"enum":[100,101,102,103,200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,423,424,426,428,429,431,451,500,501,502,503,504,505,506,507,508,510,511],"type":"integer","format":"int32","uniqueKey":"StatusCode","typeLabel":"enum\u003cinteger>"},"IsSuccess":{"type":"boolean","uniqueKey":"IsSuccess","typeLabel":"boolean"},"Data":{"oneOf":[{},{"type":"null","uniqueKey":"Data.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data","typeLabel":"null"},"DataContext":{"type":"object","properties":{"TraceId":{"oneOf":[{"type":"string","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"DataContext.TraceId","typeLabel":"string | null"}},"additionalProperties":false,"description":"The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest.","uniqueKey":"DataContext","typeLabel":"object"},"Notifications":{"type":"array","items":{"type":"object","properties":{"Code":{"pattern":"^[0-9]{6}$","type":"string","description":"6-digit MMTTNN error code. See the Public API error-code registry.","example":"070101","uniqueKey":"Notifications.items.[INDEX].Code","typeLabel":"string"},"Message":{"type":"string","uniqueKey":"Notifications.items.[INDEX].Message","typeLabel":"string"},"PropertyName":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].PropertyName","typeLabel":"string | null"},"ActionHint":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].ActionHint","typeLabel":"string | null"},"DocUrl":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].DocUrl","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"Notifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"Notifications","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"StatusCode":100,"IsSuccess":true,"Data":"\u003cunknown>","DataContext":{"TraceId":"\u003cstring>"},"Notifications":[{"Code":"070101","Message":"\u003cstring>","PropertyName":"\u003cstring>","ActionHint":"\u003cstring>","DocUrl":"\u003cstring>"}]}}},"exampleType":"generated"},"application/json":{"schema":{"type":"object","properties":{"StatusCode":{"enum":[100,101,102,103,200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,423,424,426,428,429,431,451,500,501,502,503,504,505,506,507,508,510,511],"type":"integer","format":"int32","uniqueKey":"StatusCode","typeLabel":"enum\u003cinteger>"},"IsSuccess":{"type":"boolean","uniqueKey":"IsSuccess","typeLabel":"boolean"},"Data":{"oneOf":[{},{"type":"null","uniqueKey":"Data.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data","typeLabel":"null"},"DataContext":{"type":"object","properties":{"TraceId":{"oneOf":[{"type":"string","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"DataContext.TraceId","typeLabel":"string | null"}},"additionalProperties":false,"description":"The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest.","uniqueKey":"DataContext","typeLabel":"object"},"Notifications":{"type":"array","items":{"type":"object","properties":{"Code":{"pattern":"^[0-9]{6}$","type":"string","description":"6-digit MMTTNN error code. See the Public API error-code registry.","example":"070101","uniqueKey":"Notifications.items.[INDEX].Code","typeLabel":"string"},"Message":{"type":"string","uniqueKey":"Notifications.items.[INDEX].Message","typeLabel":"string"},"PropertyName":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].PropertyName","typeLabel":"string | null"},"ActionHint":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].ActionHint","typeLabel":"string | null"},"DocUrl":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].DocUrl","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"Notifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"Notifications","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"StatusCode":100,"IsSuccess":true,"Data":"\u003cunknown>","DataContext":{"TraceId":"\u003cstring>"},"Notifications":[{"Code":"070101","Message":"\u003cstring>","PropertyName":"\u003cstring>","ActionHint":"\u003cstring>","DocUrl":"\u003cstring>"}]}}},"exampleType":"generated"},"text/json":{"schema":{"type":"object","properties":{"StatusCode":{"enum":[100,101,102,103,200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,423,424,426,428,429,431,451,500,501,502,503,504,505,506,507,508,510,511],"type":"integer","format":"int32","uniqueKey":"StatusCode","typeLabel":"enum\u003cinteger>"},"IsSuccess":{"type":"boolean","uniqueKey":"IsSuccess","typeLabel":"boolean"},"Data":{"oneOf":[{},{"type":"null","uniqueKey":"Data.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data","typeLabel":"null"},"DataContext":{"type":"object","properties":{"TraceId":{"oneOf":[{"type":"string","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"DataContext.TraceId","typeLabel":"string | null"}},"additionalProperties":false,"description":"The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest.","uniqueKey":"DataContext","typeLabel":"object"},"Notifications":{"type":"array","items":{"type":"object","properties":{"Code":{"pattern":"^[0-9]{6}$","type":"string","description":"6-digit MMTTNN error code. See the Public API error-code registry.","example":"070101","uniqueKey":"Notifications.items.[INDEX].Code","typeLabel":"string"},"Message":{"type":"string","uniqueKey":"Notifications.items.[INDEX].Message","typeLabel":"string"},"PropertyName":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].PropertyName","typeLabel":"string | null"},"ActionHint":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].ActionHint","typeLabel":"string | null"},"DocUrl":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].DocUrl","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"Notifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"Notifications","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"StatusCode":100,"IsSuccess":true,"Data":"\u003cunknown>","DataContext":{"TraceId":"\u003cstring>"},"Notifications":[{"Code":"070101","Message":"\u003cstring>","PropertyName":"\u003cstring>","ActionHint":"\u003cstring>","DocUrl":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"f5c2b3a9-9b7f-4198-9f04-091e01169f44":{"description":"Internal Server Error","content":{"text/plain":{"schema":{"type":"object","properties":{"StatusCode":{"enum":[100,101,102,103,200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,423,424,426,428,429,431,451,500,501,502,503,504,505,506,507,508,510,511],"type":"integer","format":"int32","uniqueKey":"StatusCode","typeLabel":"enum\u003cinteger>"},"IsSuccess":{"type":"boolean","uniqueKey":"IsSuccess","typeLabel":"boolean"},"Data":{"oneOf":[{},{"type":"null","uniqueKey":"Data.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data","typeLabel":"null"},"DataContext":{"type":"object","properties":{"TraceId":{"oneOf":[{"type":"string","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"DataContext.TraceId","typeLabel":"string | null"}},"additionalProperties":false,"description":"The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest.","uniqueKey":"DataContext","typeLabel":"object"},"Notifications":{"type":"array","items":{"type":"object","properties":{"Code":{"pattern":"^[0-9]{6}$","type":"string","description":"6-digit MMTTNN error code. See the Public API error-code registry.","example":"070101","uniqueKey":"Notifications.items.[INDEX].Code","typeLabel":"string"},"Message":{"type":"string","uniqueKey":"Notifications.items.[INDEX].Message","typeLabel":"string"},"PropertyName":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].PropertyName","typeLabel":"string | null"},"ActionHint":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].ActionHint","typeLabel":"string | null"},"DocUrl":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].DocUrl","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"Notifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"Notifications","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"StatusCode":100,"IsSuccess":true,"Data":"\u003cunknown>","DataContext":{"TraceId":"\u003cstring>"},"Notifications":[{"Code":"070101","Message":"\u003cstring>","PropertyName":"\u003cstring>","ActionHint":"\u003cstring>","DocUrl":"\u003cstring>"}]}}},"exampleType":"generated"},"application/json":{"schema":{"type":"object","properties":{"StatusCode":{"enum":[100,101,102,103,200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,423,424,426,428,429,431,451,500,501,502,503,504,505,506,507,508,510,511],"type":"integer","format":"int32","uniqueKey":"StatusCode","typeLabel":"enum\u003cinteger>"},"IsSuccess":{"type":"boolean","uniqueKey":"IsSuccess","typeLabel":"boolean"},"Data":{"oneOf":[{},{"type":"null","uniqueKey":"Data.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data","typeLabel":"null"},"DataContext":{"type":"object","properties":{"TraceId":{"oneOf":[{"type":"string","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"DataContext.TraceId","typeLabel":"string | null"}},"additionalProperties":false,"description":"The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest.","uniqueKey":"DataContext","typeLabel":"object"},"Notifications":{"type":"array","items":{"type":"object","properties":{"Code":{"pattern":"^[0-9]{6}$","type":"string","description":"6-digit MMTTNN error code. See the Public API error-code registry.","example":"070101","uniqueKey":"Notifications.items.[INDEX].Code","typeLabel":"string"},"Message":{"type":"string","uniqueKey":"Notifications.items.[INDEX].Message","typeLabel":"string"},"PropertyName":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].PropertyName","typeLabel":"string | null"},"ActionHint":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].ActionHint","typeLabel":"string | null"},"DocUrl":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].DocUrl","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"Notifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"Notifications","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"StatusCode":100,"IsSuccess":true,"Data":"\u003cunknown>","DataContext":{"TraceId":"\u003cstring>"},"Notifications":[{"Code":"070101","Message":"\u003cstring>","PropertyName":"\u003cstring>","ActionHint":"\u003cstring>","DocUrl":"\u003cstring>"}]}}},"exampleType":"generated"},"text/json":{"schema":{"type":"object","properties":{"StatusCode":{"enum":[100,101,102,103,200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,421,422,423,424,426,428,429,431,451,500,501,502,503,504,505,506,507,508,510,511],"type":"integer","format":"int32","uniqueKey":"StatusCode","typeLabel":"enum\u003cinteger>"},"IsSuccess":{"type":"boolean","uniqueKey":"IsSuccess","typeLabel":"boolean"},"Data":{"oneOf":[{},{"type":"null","uniqueKey":"Data.oneOf.1","typeLabel":"null"}],"uniqueKey":"Data","typeLabel":"null"},"DataContext":{"type":"object","properties":{"TraceId":{"oneOf":[{"type":"string","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Request correlation id. Quote this when reporting a problem.","uniqueKey":"DataContext.TraceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"DataContext.TraceId","typeLabel":"string | null"}},"additionalProperties":false,"description":"The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest.","uniqueKey":"DataContext","typeLabel":"object"},"Notifications":{"type":"array","items":{"type":"object","properties":{"Code":{"pattern":"^[0-9]{6}$","type":"string","description":"6-digit MMTTNN error code. See the Public API error-code registry.","example":"070101","uniqueKey":"Notifications.items.[INDEX].Code","typeLabel":"string"},"Message":{"type":"string","uniqueKey":"Notifications.items.[INDEX].Message","typeLabel":"string"},"PropertyName":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].PropertyName.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].PropertyName","typeLabel":"string | null"},"ActionHint":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].ActionHint.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].ActionHint","typeLabel":"string | null"},"DocUrl":{"oneOf":[{"type":"string","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"Notifications.items.[INDEX].DocUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"Notifications.items.[INDEX].DocUrl","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"Notifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"Notifications","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"StatusCode":100,"IsSuccess":true,"Data":"\u003cunknown>","DataContext":{"TraceId":"\u003cstring>"},"Notifications":[{"Code":"070101","Message":"\u003cstring>","PropertyName":"\u003cstring>","ActionHint":"\u003cstring>","DocUrl":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"f01c3aed-69e3-4627-b3db-e003e1c21463":{"ApiKeyAuth":{"type":"apiKey","description":"Your Gorelo API key. See [Generate API key](/generate-api-key). If your data is hosted in Australia, click the base URL at the top of this page and select `https://api.aue.gorelo.io`.","name":"X-API-Key","in":"header","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"c45f3e55-70a5-4683-bd92-9d0a077a9a8f":{"url":"https://api.usw.gorelo.io","description":"US"},"2a42ac77-a3aa-4890-87be-e126aeef1e79":{"url":"https://api.aue.gorelo.io","description":"Australia"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","description":"Your Gorelo API key. See [Generate API key](/generate-api-key). If your data is hosted in Australia, click the base URL at the top of this page and select `https://api.aue.gorelo.io`.","name":"X-API-Key","in":"header","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"X-API-Key","type":"string","description":"Your Gorelo API key. See [Generate API key](/generate-api-key). If your data is hosted in Australia, click the base URL at the top of this page and select `https://api.aue.gorelo.io`.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"X-API-Key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"gorelo","siteName":"Gorelo Documentation","title":"Everything about one contract, including each service line's actual products/labor. - Gorelo Documentation","contextualStarterQuestions":[],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor","matchLevel":1},"ar":{"href":"/ar/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor","matchLevel":1},"pt-BR":{"href":"/pt-br/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor","matchLevel":1},"fr-CA":{"href":"/fr-ca/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor","matchLevel":1},"ca":{"href":"/ca/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor","matchLevel":1},"cn":{"href":"/cn/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor","matchLevel":1},"zh":{"href":"/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor","matchLevel":0}}},"lastModified":"2026-10-27T17:47:18.582Z","originalFileLocation":"zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor.mdx","locale":"zh"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Adds the resolved Client, the invoice schedule (DaysBeforeInvoiceCreation, InvoiceDue, AutoApproveAndSend), Contacts, and on each service line one filled labor-terms-detail object (UnlimitedHoursDetails/PerHourDetails/ LimitedHoursDetails/BlockHoursDetails, matching LaborTerms) plus LineItems — the actual products/labor billed on that line, empty when there\u0026#x27;s nothing billed yet. A non-existent id, or one belonging to another service provider, is a 404.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Gorelo Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/gorelo/WDrabCfHIb0Y7HhN/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/gorelo/WDrabCfHIb0Y7HhN/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/gorelo/WDrabCfHIb0Y7HhN/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/gorelo/WDrabCfHIb0Y7HhN/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/gorelo/WDrabCfHIb0Y7HhN/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/gorelo/WDrabCfHIb0Y7HhN/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/gorelo/WDrabCfHIb0Y7HhN/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/gorelo/WDrabCfHIb0Y7HhN/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/gorelo/WDrabCfHIb0Y7HhN/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Everything about one contract, including each service line\u0026#x27;s actual products/labor. - Gorelo Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Adds the resolved Client, the invoice schedule (DaysBeforeInvoiceCreation, InvoiceDue, AutoApproveAndSend), Contacts, and on each service line one filled labor-terms-detail object (UnlimitedHoursDetails/PerHourDetails/ LimitedHoursDetails/BlockHoursDetails, matching LaborTerms) plus LineItems — the actual products/labor billed on that line, empty when there\u0026#x27;s nothing billed yet. A non-existent id, or one belonging to another service provider, is a 404.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Gorelo Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://help.gorelo.io/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://gorelo.mintlify.app/_mintlify/api/og/v2?division=Billing\u0026amp;title=Everything+about+one+contract%2C+including+each+service+line%27s+actual+products%2Flabor.\u0026amp;description=Adds+the+resolved+%60Client%60%2C+the+invoice+schedule+%28%60DaysBeforeInvoiceCreation%60%2C%0D%0A%60InvoiceDue%60%2C+%60AutoApproveAndSend%60%29%2C+%60Contacts%60%2C+and+on+each+service+line+one%0D%0Af\u0026amp;theme=13a01696fc0cf71f5fdb322b\u0026amp;signature=538a7888b86f5e2c8bef1ad655be88dc225c43db3647c9c0335b5d24aca23197\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Everything about one contract, including each service line\u0026#x27;s actual products/labor. - Gorelo Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Adds the resolved Client, the invoice schedule (DaysBeforeInvoiceCreation, InvoiceDue, AutoApproveAndSend), Contacts, and on each service line one filled labor-terms-detail object (UnlimitedHoursDetails/PerHourDetails/ LimitedHoursDetails/BlockHoursDetails, matching LaborTerms) plus LineItems — the actual products/labor billed on that line, empty when there\u0026#x27;s nothing billed yet. A non-existent id, or one belonging to another service provider, is a 404.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://gorelo.mintlify.app/_mintlify/api/og/v2?division=Billing\u0026amp;title=Everything+about+one+contract%2C+including+each+service+line%27s+actual+products%2Flabor.\u0026amp;description=Adds+the+resolved+%60Client%60%2C+the+invoice+schedule+%28%60DaysBeforeInvoiceCreation%60%2C%0D%0A%60InvoiceDue%60%2C+%60AutoApproveAndSend%60%29%2C+%60Contacts%60%2C+and+on+each+service+line+one%0D%0Af\u0026amp;theme=13a01696fc0cf71f5fdb322b\u0026amp;signature=538a7888b86f5e2c8bef1ad655be88dc225c43db3647c9c0335b5d24aca23197\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/gorelo/WDrabCfHIb0Y7HhN/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Gorelo Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1DAF94\">\u003clink data-mint-head rel=\"canonical\" href=\"https://help.gorelo.io/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://help.gorelo.io/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://help.gorelo.io/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ar\" href=\"https://help.gorelo.io/ar/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://help.gorelo.io/pt-br/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr-CA\" href=\"https://help.gorelo.io/fr-ca/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ca\" href=\"https://help.gorelo.io/ca/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://help.gorelo.io/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://help.gorelo.io/#organization\",\"name\":\"Gorelo Documentation\",\"url\":\"https://help.gorelo.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/gorelo/J8h_fLstMj_tYUTJ/logo/logo-light.svg?fit=max\u0026auto=format\u0026n=J8h_fLstMj_tYUTJ\u0026q=85\u0026s=3c12ffa7afbcef131d2c6fb36f00e159\"}},{\"@type\":\"WebSite\",\"@id\":\"https://help.gorelo.io#website\",\"name\":\"Gorelo Documentation\",\"url\":\"https://help.gorelo.io\",\"publisher\":{\"@id\":\"https://help.gorelo.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://help.gorelo.io/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor#webpage\",\"url\":\"https://help.gorelo.io/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor\",\"name\":\"Everything about one contract, including each service line's actual products/labor.\",\"description\":\"Adds the resolved Client, the invoice schedule (DaysBeforeInvoiceCreation, InvoiceDue, AutoApproveAndSend), Contacts, and on each service line one filled labor-terms-detail object (UnlimitedHoursDetails/PerHourDetails/ LimitedHoursDetails/BlockHoursDetails, matching LaborTerms) plus LineItems — the actual products/labor billed on that line, empty when there's nothing billed yet. A non-existent id, or one belonging to another service provider, is a 404.\",\"dateModified\":\"2026-10-27T17:47:18.582Z\",\"isPartOf\":{\"@id\":\"https://help.gorelo.io#website\"},\"breadcrumb\":{\"@id\":\"https://help.gorelo.io/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://help.gorelo.io/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API 參考\",\"item\":\"https://help.gorelo.io/zh/api-reference/alerts/lists-alerts-for-the-authenticated-service-provider\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Billing\",\"item\":\"https://help.gorelo.io/zh/api-reference/billing/downloads-the-rendered-pdf-for-an-invoice\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Everything about one contract, including each service line's actual products/labor.\",\"item\":\"https://help.gorelo.io/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://help.gorelo.io/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor#apireference\",\"headline\":\"Everything about one contract, including each service line's actual products/labor.\",\"name\":\"Everything about one contract, including each service line's actual products/labor.\",\"description\":\"Adds the resolved Client, the invoice schedule (DaysBeforeInvoiceCreation, InvoiceDue, AutoApproveAndSend), Contacts, and on each service line one filled labor-terms-detail object (UnlimitedHoursDetails/PerHourDetails/ LimitedHoursDetails/BlockHoursDetails, matching LaborTerms) plus LineItems — the actual products/labor billed on that line, empty when there's nothing billed yet. A non-existent id, or one belonging to another service provider, is a 404.\",\"url\":\"https://help.gorelo.io/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor\",\"mainEntityOfPage\":{\"@id\":\"https://help.gorelo.io/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor#webpage\"},\"dateModified\":\"2026-10-27T17:47:18.582Z\",\"publisher\":{\"@id\":\"https://help.gorelo.io/#organization\"},\"isPartOf\":{\"@id\":\"https://help.gorelo.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Gorelo Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Gorelo Documentation","nav":{"global":null,"languages":[{"language":"en","default":true,"pages":[{"title":"en","href":"/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor"}]},{"language":"ar","pages":[{"title":"ar","href":"/ar/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/pt-br/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor"}]},{"language":"fr-CA","pages":[{"title":"fr-CA","href":"/fr-ca/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor"}]},{"language":"ca","pages":[{"title":"ca","href":"/ca/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor"}]},{"language":"cn","pages":[{"title":"cn","href":"/cn/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor"}]},{"language":"zh","tabs":[{"tab":"入門","icon":"rocket-launch","pages":[{"title":"入門","href":"/zh/what-is-gorelo"}]},{"tab":"服務交付","icon":"bell","pages":[{"title":"服務交付","href":"/zh/sd-overview"}]},{"tab":"遠端管理","icon":"desktop","pages":[{"title":"遠端管理","href":"/zh/remote-management-overview"}]},{"tab":"帳務","icon":"sack-dollar","pages":[{"title":"帳務","href":"/zh/how-billing-works"}]},{"tab":"整合","icon":"plug","pages":[{"title":"整合","href":"/zh/integrations-overview"}]},{"tab":"API","icon":"satellite-dish","pages":[{"title":"Gorelo API 總覽","href":"/zh/api-overview"},{"title":"產生 API 金鑰","href":"/zh/generate-api-key"},{"title":"撤銷 API 金鑰","href":"/zh/revoke-api-key"},{"group":"API 參考","pages":[{"group":"Alerts","pages":[{"title":"Lists alerts for the authenticated service provider.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/alerts","href":"/zh/api-reference/alerts/lists-alerts-for-the-authenticated-service-provider"},{"title":"Posts an external alert against a client for the service provider.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/alerts","href":"/zh/api-reference/alerts/posts-an-external-alert-against-a-client-for-the-service-provider"}]},{"group":"Assets","pages":[{"title":"Lists agent assets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/assets/agents","href":"/zh/api-reference/assets/lists-agent-assets"},{"title":"Lists custom assets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/assets/custom","href":"/zh/api-reference/assets/lists-custom-assets"},{"title":"Creates a custom asset.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/assets/custom","href":"/zh/api-reference/assets/creates-a-custom-asset"},{"title":"Gets a single custom asset by id.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/assets/custom/{customAssetId}","href":"/zh/api-reference/assets/gets-a-single-custom-asset-by-id"},{"title":"Deletes a custom asset.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/assets/custom/{customAssetId}","href":"/zh/api-reference/assets/deletes-a-custom-asset"},{"title":"Updates a custom asset. Send only the fields you want to change.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/assets/custom/{customAssetId}","href":"/zh/api-reference/assets/updates-a-custom-asset-send-only-the-fields-you-want-to-change"},{"title":"Gets a single agent (managed device) asset by id.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/assets/agents/{agentAssetId}","href":"/zh/api-reference/assets/gets-a-single-agent-managed-device-asset-by-id"},{"title":"Deletes an agent (managed device) asset.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/assets/agents/{agentAssetId}","href":"/zh/api-reference/assets/deletes-an-agent-managed-device-asset"},{"title":"Lists the patches installed on an agent.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/assets/agents/{agentAssetId}/patches","href":"/zh/api-reference/assets/lists-the-patches-installed-on-an-agent"},{"title":"Lists the Windows updates pending on an agent.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/assets/agents/{agentAssetId}/patches/available","href":"/zh/api-reference/assets/lists-the-windows-updates-pending-on-an-agent"},{"title":"Lists the applications installed on an agent.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/assets/agents/{agentAssetId}/apps","href":"/zh/api-reference/assets/lists-the-applications-installed-on-an-agent"},{"title":"Gets an agent's processors, memory and disks.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/assets/agents/{agentAssetId}/hardware","href":"/zh/api-reference/assets/gets-an-agents-processors-memory-and-disks"},{"title":"Lists the tags on an agent.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/assets/agents/{agentAssetId}/tags","href":"/zh/api-reference/assets/lists-the-tags-on-an-agent"},{"title":"Lists the service provider's scripts using cursor pagination.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/scripts","href":"/zh/api-reference/assets/lists-the-service-providers-scripts-using-cursor-pagination"},{"title":"Gets a script, with its content.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/scripts/{scriptId}","href":"/zh/api-reference/assets/gets-a-script-with-its-content"},{"title":"Lists the asset types.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/assets/types","href":"/zh/api-reference/assets/lists-the-asset-types"},{"title":"Lists the hardware types a custom asset can be given. \u003cb>Deprecated:\u003c/b> use `GET /v1/assets/types`.","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json get /v1/assets/custom/hardware-types","href":"/zh/api-reference/assets/lists-the-hardware-types-a-custom-asset-can-be-given-\u003cb>deprecated:\u003cb>-use-`get-v1assetstypes`"},{"title":"Lists uptime checks","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/uptime","href":"/zh/api-reference/assets/lists-uptime-checks"},{"title":"Creates an uptime check.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/uptime","href":"/zh/api-reference/assets/creates-an-uptime-check"},{"title":"Gets a single uptime check by id.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/uptime/{uptimeId}","href":"/zh/api-reference/assets/gets-a-single-uptime-check-by-id"},{"title":"Deletes an uptime check.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/uptime/{uptimeId}","href":"/zh/api-reference/assets/deletes-an-uptime-check"},{"title":"Updates an uptime check. Send only the fields you want to change.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/uptime/{uptimeId}","href":"/zh/api-reference/assets/updates-an-uptime-check-send-only-the-fields-you-want-to-change"}]},{"group":"Attachments","pages":[{"title":"Uploads a file and returns a link to it.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/attachments","href":"/zh/api-reference/attachments/uploads-a-file-and-returns-a-link-to-it"}]},{"group":"Billing","pages":[{"title":"Downloads the rendered PDF for an invoice.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/invoices/{invoiceId}/pdf","href":"/zh/api-reference/billing/downloads-the-rendered-pdf-for-an-invoice"},{"title":"Lists billing roles","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/billing-roles","href":"/zh/api-reference/billing/lists-billing-roles"},{"title":"Lists work types","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/work-types","href":"/zh/api-reference/billing/lists-work-types"},{"title":"Lists the tax rates configured for the service provider.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/taxes","href":"/zh/api-reference/billing/lists-the-tax-rates-configured-for-the-service-provider"},{"title":"Lists logged time across every ticket and task, narrowed by any of the filters.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/time-entries","href":"/zh/api-reference/billing/lists-logged-time-across-every-ticket-and-task-narrowed-by-any-of-the-filters"},{"title":"Logs time against a ticket.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/time-entries","href":"/zh/api-reference/billing/logs-time-against-a-ticket"},{"title":"Gets a single time entry by id.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/time-entries/{timeEntryId}","href":"/zh/api-reference/billing/gets-a-single-time-entry-by-id"},{"title":"Deletes a time entry.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/time-entries/{timeEntryId}","href":"/zh/api-reference/billing/deletes-a-time-entry"},{"title":"Partially updates a time entry. Send only the fields you want to change.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/time-entries/{timeEntryId}","href":"/zh/api-reference/billing/partially-updates-a-time-entry-send-only-the-fields-you-want-to-change"},{"title":"Lists billing contracts, each with the service lines it is made of.","description":"A contract is the agreement with a client; a service line is one set of labour terms and\r\nproducts inside it. Most contracts have a single service line. A service line's id is the\r\nsame identifier a time entry's `ServiceLineId` carries, so a contract's service lines\r\nare what a time entry can be billed against.\r\n\n\r\nService lines ride inside the contract rather than being fetched per contract, so a page of\r\ncontracts costs a fixed number of queries. Every filter is optional; the client filter is a\r\ncomma-separated list and a contract matches if its client is any of them. A well-formed value\r\nthat matches nothing - a client id that owns no contracts - is an empty page, not a 404.\r\nTimestamps are UTC; `StartDate` and `EndDate` are stored as dates, so they are\r\nalways midnight.\r\n\n`Status` is derived, because a contract has no stored status: 3 `Archived` when\r\nthe contract has been archived, 2 `Expired` when its end date is behind the service\r\nprovider's own today, and 1 `Active` otherwise. Deleted contracts are not listed at\r\nall. Archived contracts are left out unless `statusIds` names Archived; expired ones\r\nare listed by default, so a caller that wants only live contracts passes\r\n`statusIds=1`.\r\n\n`RecurringAmount` and `RecurringCost` cover the products billed on the contract's\r\nown recurring schedule, excluding one-off lines. Amount is before tax; cost is the unit cost\r\nrecorded against each product line multiplied by its quantity, so the difference between\r\nthem is the periodic margin. A contract's two figures are exactly the sum of its service\r\nlines'.\r\n\n`LaborTerms` says how a service line bills time - Unlimited Hours, Hourly, Block Hours,\r\nNo Labor Terms, or Limited Hours - and `LaborRates` says how an hour is priced for the\r\ntwo that bill hourly, and is null for the rest.\r\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contracts","href":"/zh/api-reference/billing/lists-billing-contracts-each-with-the-service-lines-it-is-made-of"},{"title":"Everything about one contract, including each service line's actual products/labor.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contracts/{contractId}","href":"/zh/api-reference/billing/everything-about-one-contract-including-each-service-lines-actual-productslabor"},{"title":"Deletes a contract.","description":"Blocked with 409 if the contract has ever had an invoice generated from it — a contract\r\nwith real billing history can't be deleted by accident. Deleting a contract that's already\r\ndeleted is accepted as a no-op. A non-existent id, or one belonging to another service\r\nprovider, is a 404.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/contracts/{contractId}","href":"/zh/api-reference/billing/deletes-a-contract"},{"title":"Lists the service provider's invoices, filtered and sorted.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/invoices","href":"/zh/api-reference/billing/lists-the-service-providers-invoices-filtered-and-sorted"},{"title":"Raises a manual invoice against a client, with line items.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/invoices","href":"/zh/api-reference/billing/raises-a-manual-invoice-against-a-client-with-line-items"},{"title":"Gets one invoice, with its attachments and line items.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/invoices/{invoiceId}","href":"/zh/api-reference/billing/gets-one-invoice-with-its-attachments-and-line-items"},{"title":"Deletes or voids an invoice, depending on its current status.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/invoices/{invoiceId}","href":"/zh/api-reference/billing/deletes-or-voids-an-invoice-depending-on-its-current-status"},{"title":"Records a payment received outside Gorelo against an approved invoice.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/payments","href":"/zh/api-reference/billing/records-a-payment-received-outside-gorelo-against-an-approved-invoice"},{"title":"Deletes a payment that was recorded through the API.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/payments/{paymentId}","href":"/zh/api-reference/billing/deletes-a-payment-that-was-recorded-through-the-api"},{"title":"Lists the categories products are organised under, each with its subcategories.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/items/categories","href":"/zh/api-reference/billing/lists-the-categories-products-are-organised-under-each-with-its-subcategories"},{"title":"Lists the service provider's item catalog: products and bundles.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/items","href":"/zh/api-reference/billing/lists-the-service-providers-item-catalog:-products-and-bundles"},{"title":"Creates a product or a bundle in the item catalog.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/items","href":"/zh/api-reference/billing/creates-a-product-or-a-bundle-in-the-item-catalog"},{"title":"A single catalog item — a product or a bundle.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/items/{itemId}","href":"/zh/api-reference/billing/a-single-catalog-item-—-a-product-or-a-bundle"},{"title":"Deletes an item.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/items/{itemId}","href":"/zh/api-reference/billing/deletes-an-item"},{"title":"Partially updates an item. Send only the fields you want to change.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/items/{itemId}","href":"/zh/api-reference/billing/partially-updates-an-item-send-only-the-fields-you-want-to-change"}]},{"group":"Clients","pages":[{"title":"Lists clients","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/clients","href":"/zh/api-reference/clients/lists-clients"},{"title":"Creates a client (and its default location) for the service provider.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/clients","href":"/zh/api-reference/clients/creates-a-client-and-its-default-location-for-the-service-provider"},{"title":"Gets a single client by id.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/clients/{clientId}","href":"/zh/api-reference/clients/gets-a-single-client-by-id"},{"title":"Deletes a client.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/clients/{clientId}","href":"/zh/api-reference/clients/deletes-a-client"},{"title":"Updates an existing client. Only supplied (non-null) fields are changed.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/clients/{clientId}","href":"/zh/api-reference/clients/updates-an-existing-client-only-supplied-non-null-fields-are-changed"},{"title":"Lists the locations for a given client.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/clients/{clientId}/locations","href":"/zh/api-reference/clients/lists-the-locations-for-a-given-client"}]},{"group":"Contacts","pages":[{"title":"Gets a single contact by id.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts/{contactId}","href":"/zh/api-reference/contacts/gets-a-single-contact-by-id"},{"title":"Deletes a contact.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/contacts/{contactId}","href":"/zh/api-reference/contacts/deletes-a-contact"},{"title":"Updates an existing contact.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/contacts/{contactId}","href":"/zh/api-reference/contacts/updates-an-existing-contact"},{"title":"Lists contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/contacts","href":"/zh/api-reference/contacts/lists-contacts"},{"title":"Creates a contact under a client, or a temporary contact when no client is given.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/contacts","href":"/zh/api-reference/contacts/creates-a-contact-under-a-client-or-a-temporary-contact-when-no-client-is-given"}]},{"group":"Deletions","pages":[{"title":"Lists deleted records","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/deletions","href":"/zh/api-reference/deletions/lists-deleted-records"}]},{"group":"Documents","pages":[{"title":"Lists the service provider's documents.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/documents","href":"/zh/api-reference/documents/lists-the-service-providers-documents"},{"title":"Creates a document.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/documents","href":"/zh/api-reference/documents/creates-a-document"},{"title":"Gets a single document.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/documents/{documentId}","href":"/zh/api-reference/documents/gets-a-single-document"},{"title":"Updates a document.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/documents/{documentId}","href":"/zh/api-reference/documents/updates-a-document"},{"title":"Duplicates a document.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/documents/{documentId}/duplicate","href":"/zh/api-reference/documents/duplicates-a-document"},{"title":"Downloads a document as a PDF.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/documents/{documentId}/pdf","href":"/zh/api-reference/documents/downloads-a-document-as-a-pdf"},{"title":"Lists a document's versions, newest first.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/documents/{documentId}/versions","href":"/zh/api-reference/documents/lists-a-documents-versions-newest-first"},{"title":"Gets one version of a document, with its body and attachments.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/documents/{documentId}/versions/{versionId}","href":"/zh/api-reference/documents/gets-one-version-of-a-document-with-its-body-and-attachments"},{"title":"Makes an earlier version the current one.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/documents/{documentId}/versions/{versionId}/restore","href":"/zh/api-reference/documents/makes-an-earlier-version-the-current-one"},{"title":"Lists the records a document is related to.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/documents/{documentId}/related-items","href":"/zh/api-reference/documents/lists-the-records-a-document-is-related-to"},{"title":"Relates a document to other records.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/documents/{documentId}/related-items","href":"/zh/api-reference/documents/relates-a-document-to-other-records"},{"title":"Removes one related item from a document.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/documents/{documentId}/related-items/{relatedItemId}","href":"/zh/api-reference/documents/removes-one-related-item-from-a-document"}]},{"group":"Forms","pages":[{"title":"Lists the service provider's forms, most recently updated first.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/forms","href":"/zh/api-reference/forms/lists-the-service-providers-forms-most-recently-updated-first"},{"title":"Lists a form's submitted responses, newest first.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/forms/{formId}/responses","href":"/zh/api-reference/forms/lists-a-forms-submitted-responses-newest-first"},{"title":"Issues a link through which the form can be submitted.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/forms/{formId}/submission-links","href":"/zh/api-reference/forms/issues-a-link-through-which-the-form-can-be-submitted"}]},{"group":"Organization","pages":[{"title":"Lists users","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/organization/users","href":"/zh/api-reference/organization/lists-users"},{"title":"Lists the service provider's API keys using cursor pagination, newest first.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/api-keys","href":"/zh/api-reference/organization/lists-the-service-providers-api-keys-using-cursor-pagination-newest-first"},{"title":"Creates an API key for the authenticated service provider.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/api-keys","href":"/zh/api-reference/organization/creates-an-api-key-for-the-authenticated-service-provider"},{"title":"Revokes an API key.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/api-keys/{apiKeyId}","href":"/zh/api-reference/organization/revokes-an-api-key"},{"title":"Lists the technician groups configured for the service provider.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/organization/groups","href":"/zh/api-reference/organization/lists-the-technician-groups-configured-for-the-service-provider"}]},{"group":"Projects","pages":[{"title":"Lists the projects visible to the authenticated service provider, newest activity first.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects","href":"/zh/api-reference/projects/lists-the-projects-visible-to-the-authenticated-service-provider-newest-activity-first"},{"title":"Creates a project for the authenticated service provider.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/projects","href":"/zh/api-reference/projects/creates-a-project-for-the-authenticated-service-provider"},{"title":"Gets a single project.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/{projectId}","href":"/zh/api-reference/projects/gets-a-single-project"},{"title":"Deletes a project and every task in it.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/projects/{projectId}","href":"/zh/api-reference/projects/deletes-a-project-and-every-task-in-it"},{"title":"Updates a project. Send only the fields you want to change.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/projects/{projectId}","href":"/zh/api-reference/projects/updates-a-project-send-only-the-fields-you-want-to-change"},{"title":"Lists the project tags configured for the service provider.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/tags","href":"/zh/api-reference/projects/lists-the-project-tags-configured-for-the-service-provider"},{"title":"Lists the project types configured for the service provider.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/types","href":"/zh/api-reference/projects/lists-the-project-types-configured-for-the-service-provider"},{"title":"Lists a project's sections.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/{projectId}/sections","href":"/zh/api-reference/projects/lists-a-projects-sections"},{"title":"Adds a section to a project.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/projects/{projectId}/sections","href":"/zh/api-reference/projects/adds-a-section-to-a-project"},{"title":"Deletes a section and every task in it.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/projects/{projectId}/sections/{sectionId}","href":"/zh/api-reference/projects/deletes-a-section-and-every-task-in-it"},{"title":"Updates a section's title or colour. Send only the fields you want to change.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/projects/{projectId}/sections/{sectionId}","href":"/zh/api-reference/projects/updates-a-sections-title-or-colour-send-only-the-fields-you-want-to-change"},{"title":"Lists a project's tasks.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/{projectId}/tasks","href":"/zh/api-reference/projects/lists-a-projects-tasks"},{"title":"Creates a task on a project's board.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/projects/{projectId}/tasks","href":"/zh/api-reference/projects/creates-a-task-on-a-projects-board"},{"title":"Returns a project's comments, newest first.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/{projectId}/comments","href":"/zh/api-reference/projects/returns-a-projects-comments-newest-first"},{"title":"Posts a comment on a project.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/projects/{projectId}/comments","href":"/zh/api-reference/projects/posts-a-comment-on-a-project"},{"title":"Returns one comment on a project.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/{projectId}/comments/{commentId}","href":"/zh/api-reference/projects/returns-one-comment-on-a-project"},{"title":"Deletes one comment on a project.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/projects/{projectId}/comments/{commentId}","href":"/zh/api-reference/projects/deletes-one-comment-on-a-project"},{"title":"Returns one task in full.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/{projectId}/tasks/{taskId}","href":"/zh/api-reference/projects/returns-one-task-in-full"},{"title":"Deletes a task.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/projects/{projectId}/tasks/{taskId}","href":"/zh/api-reference/projects/deletes-a-task"},{"title":"Updates a task. Send only the fields you want to change.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/projects/{projectId}/tasks/{taskId}","href":"/zh/api-reference/projects/updates-a-task-send-only-the-fields-you-want-to-change"},{"title":"Returns a task's comments, newest first.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/{projectId}/tasks/{taskId}/comments","href":"/zh/api-reference/projects/returns-a-tasks-comments-newest-first"},{"title":"Posts a comment on a task.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/projects/{projectId}/tasks/{taskId}/comments","href":"/zh/api-reference/projects/posts-a-comment-on-a-task"},{"title":"Starts a side conversation on a task.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/projects/{projectId}/tasks/{taskId}/conversations/side-conversation","href":"/zh/api-reference/projects/starts-a-side-conversation-on-a-task"},{"title":"Asks contacts to approve something on a task.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/projects/{projectId}/tasks/{taskId}/conversations/approval","href":"/zh/api-reference/projects/asks-contacts-to-approve-something-on-a-task"},{"title":"Returns one comment on a task.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/{projectId}/tasks/{taskId}/comments/{commentId}","href":"/zh/api-reference/projects/returns-one-comment-on-a-task"},{"title":"Deletes one comment on a task.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/projects/{projectId}/tasks/{taskId}/comments/{commentId}","href":"/zh/api-reference/projects/deletes-one-comment-on-a-task"},{"title":"Lists the conversations on a task.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/{projectId}/tasks/{taskId}/conversations","href":"/zh/api-reference/projects/lists-the-conversations-on-a-task"},{"title":"Gets one approval on a task, with its approvers.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/projects/{projectId}/tasks/{taskId}/approvals/{approvalId}","href":"/zh/api-reference/projects/gets-one-approval-on-a-task-with-its-approvers"}]},{"group":"Tickets","pages":[{"title":"Lists tickets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tickets","href":"/zh/api-reference/tickets/lists-tickets"},{"title":"Creates a ticket for the authenticated service provider.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tickets","href":"/zh/api-reference/tickets/creates-a-ticket-for-the-authenticated-service-provider"},{"title":"Gets a single ticket.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tickets/{ticketId}","href":"/zh/api-reference/tickets/gets-a-single-ticket"},{"title":"Deletes a ticket and its time entries.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/tickets/{ticketId}","href":"/zh/api-reference/tickets/deletes-a-ticket-and-its-time-entries"},{"title":"Partially updates a ticket. Send only the fields you want to change.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/tickets/{ticketId}","href":"/zh/api-reference/tickets/partially-updates-a-ticket-send-only-the-fields-you-want-to-change"},{"title":"Gets a ticket comment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tickets/{ticketId}/comments/{commentId}","href":"/zh/api-reference/tickets/gets-a-ticket-comment"},{"title":"Deletes a private comment from a ticket.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/tickets/{ticketId}/comments/{commentId}","href":"/zh/api-reference/tickets/deletes-a-private-comment-from-a-ticket"},{"title":"Lists the ticket statuses configured for the service provider.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tickets/statuses","href":"/zh/api-reference/tickets/lists-the-ticket-statuses-configured-for-the-service-provider"},{"title":"Lists the ticket tags configured for the service provider.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tickets/tags","href":"/zh/api-reference/tickets/lists-the-ticket-tags-configured-for-the-service-provider"},{"title":"Lists the ticket types configured for the service provider.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tickets/types","href":"/zh/api-reference/tickets/lists-the-ticket-types-configured-for-the-service-provider"},{"title":"Lists ticket comments","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tickets/{ticketId}/comments","href":"/zh/api-reference/tickets/lists-ticket-comments"},{"title":"Adds a comment to a ticket","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tickets/{ticketId}/comments","href":"/zh/api-reference/tickets/adds-a-comment-to-a-ticket"},{"title":"Lists ticket conversations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tickets/{ticketId}/conversations","href":"/zh/api-reference/tickets/lists-ticket-conversations"},{"title":"Gets a ticket approval","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/tickets/{ticketId}/approvals/{approvalId}","href":"/zh/api-reference/tickets/gets-a-ticket-approval"},{"title":"Creates an approval on a ticket","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tickets/{ticketId}/conversations/approval","href":"/zh/api-reference/tickets/creates-an-approval-on-a-ticket"},{"title":"Creates a side conversation on a ticket","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/tickets/{ticketId}/conversations/side-conversation","href":"/zh/api-reference/tickets/creates-a-side-conversation-on-a-ticket"}]}]}]}]}]},"title":"Everything about one contract, including each service line's actual products/labor. - Gorelo Documentation","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-R3M_BF4L.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","clsx-BGBGWFTt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cv_O2fky.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-2C5OB2eV.js"]}