# Canary Docs > Guides and API reference for running maintenance operations with Canary. - [Canary product guide](https://docs.oncanary.com/help/index.md): Set up Canary, run maintenance work, and keep equipment history connected. - [Set up Canary](https://docs.oncanary.com/help/getting-started/quickstart.md): Create a maintainable foundation and send the first work order to your team. - [Core concepts](https://docs.oncanary.com/help/getting-started/core-concepts.md): Understand how Canary connects work, equipment, inventory, and operational history. - [Canary mobile app](https://docs.oncanary.com/help/mobile/overview.md): Use Canary on iOS and Android for connected field maintenance. - [Manage work](https://docs.oncanary.com/help/managing-work/overview.md): Turn incoming needs and preventive plans into assigned, traceable maintenance work. - [Work orders](https://docs.oncanary.com/help/work-orders/overview.md): Understand the record that carries a maintenance job from planning through preserved history. - [Create a work order](https://docs.oncanary.com/help/work-orders/create.md): Capture a maintenance task with the context, ownership, and dates your team needs. - [Update status and assignment](https://docs.oncanary.com/help/work-orders/status-and-assignment.md): Keep work-order progress, ownership, and completion history accurate. - [Time, cost, and parts](https://docs.oncanary.com/help/work-orders/time-and-cost.md): Record labor time, review calculated cost, and manage planned parts on work orders. - [Comments, activity, and PDF export](https://docs.oncanary.com/help/work-orders/comments-activity-and-pdf.md): Coordinate on a job, review its timeline, and generate a branded work-order record. - [Work Order Templates](https://docs.oncanary.com/help/work-orders/templates.md): Reuse a consistent starting point for common maintenance jobs. - [Requests](https://docs.oncanary.com/help/requests/overview.md): Capture maintenance needs, route them for review, and connect approved work to a work order. - [Create and review Requests](https://docs.oncanary.com/help/requests/create-and-review.md): Submit a maintenance need, route it to the right reviewers, and create its linked work order. - [Request Portals](https://docs.oncanary.com/help/requests/request-portals.md): Create a public intake form and share it by link or QR code. - [Maintenance Plans](https://docs.oncanary.com/help/maintenance-plans/overview.md): Generate traceable preventive work orders from a template, assets, and a fixed calendar cadence. - [Create and manage Maintenance Plans](https://docs.oncanary.com/help/maintenance-plans/create-and-manage.md): Preview a preventive schedule, manage future intent, and backfill selected missed work. - [Procedures](https://docs.oncanary.com/help/procedures/overview.md): Build reusable instructions and preserve the exact responses completed on each work order. - [Create a Procedure](https://docs.oncanary.com/help/procedures/create-procedure.md): Build a reusable, versioned set of fields for repeatable work. - [Complete a Procedure](https://docs.oncanary.com/help/procedures/complete-procedure.md): Record structured responses on a work order and preserve the finished Procedure as read-only history. - [Schedule work](https://docs.oncanary.com/help/reports/schedule.md): Plan work by technician, start time, and estimated hours, then publish the changes together. - [Manage equipment](https://docs.oncanary.com/help/managing-equipment/overview.md): Model locations, assets, meters, documents, and scannable identifiers in Canary. - [About assets](https://docs.oncanary.com/help/assets/overview.md): Learn how assets connect equipment details, hierarchy, work, parts, meters, and history. - [Create and manage assets](https://docs.oncanary.com/help/assets/create-and-manage-assets.md): Add equipment, build asset hierarchies, update status, and restore archived assets. - [Locations](https://docs.oncanary.com/help/assets/locations.md): Organize sites and work areas, then safely manage their equipment and inventory relationships. - [QR codes and barcodes](https://docs.oncanary.com/help/assets/qr-codes.md): Assign scannable identifiers to assets, locations, and parts. - [Asset documents](https://docs.oncanary.com/help/assets/documents.md): Attach equipment manuals and make processed knowledge available to Ask Canary. - [About meters](https://docs.oncanary.com/help/meters/overview.md): Track numeric values or on/off conditions for an asset or location. - [Record and review meter readings](https://docs.oncanary.com/help/meters/readings.md): Add meter readings and understand how they update history and automations. - [Meter automations](https://docs.oncanary.com/help/meters/meter-automations.md): Understand how readings trigger work orders, asset status changes, and email actions. - [Parts and purchasing](https://docs.oncanary.com/help/parts-purchasing/overview.md): Connect stock, work-order demand, vendors, purchase orders, and receipts. - [About parts](https://docs.oncanary.com/help/parts/overview.md): Understand the part catalog, location stock, availability, and equipment relationships. - [Create and manage parts](https://docs.oncanary.com/help/parts/create-and-manage-parts.md): Build the part catalog, set stock targets, link equipment, and restore archived parts. - [Stock movements](https://docs.oncanary.com/help/parts/stock-movements.md): Restock, transfer, consume, adjust, and audit part inventory. - [Work-order parts](https://docs.oncanary.com/help/parts/work-order-parts.md): Plan, commit, stage, and issue inventory for maintenance work. - [Vendors](https://docs.oncanary.com/help/purchasing/vendors.md): Manage suppliers, contacts, equipment relationships, and part-specific purchasing terms. - [Purchase orders](https://docs.oncanary.com/help/purchasing/purchase-orders.md): Request, approve, receive, correct, archive, and restore purchased inventory. - [Automate and understand](https://docs.oncanary.com/help/automate-and-understand/overview.md): Turn meter readings into action, find operational knowledge, and review trustworthy reports. - [About automations](https://docs.oncanary.com/help/automations/overview.md): Run defined maintenance actions when meter readings match a rule. - [Create an automation](https://docs.oncanary.com/help/automations/create-automation.md): Configure a meter trigger, optional conditions, ordered actions, and cooldowns. - [Review automation executions](https://docs.oncanary.com/help/automations/review-executions.md): Explain successful, skipped, partial, and failed automation runs. - [About Ask Canary](https://docs.oncanary.com/help/ask-canary/overview.md): Search maintenance records and documents, analyze history, and approve prepared changes. - [Best prompts for Ask Canary](https://docs.oncanary.com/help/ask-canary/best-prompts.md): Give Ask Canary enough context to return useful records, sources, and prepared actions. - [Reports](https://docs.oncanary.com/help/reports/overview.md): Read live work-order operations and distinguish modeled reliability, downtime, and OEE analysis. - [Manage your organization](https://docs.oncanary.com/help/manage-organization/overview.md): Configure people, access, feature boundaries, custom data, documents, and integrations. - [Users and teams](https://docs.oncanary.com/help/admin/users-and-teams.md): Invite people, set access, group assignees, and remove records safely. - [Features and recovery](https://docs.oncanary.com/help/admin/features-and-recovery.md): Manage optional modules, dependency order, preserved history, and recovery workflows. - [Custom fields](https://docs.oncanary.com/help/admin/custom-fields.md): Add typed organization data to assets, locations, parts, and work orders. - [API keys](https://docs.oncanary.com/help/admin/api-keys.md): Create scoped test or live credentials for Canary public API integrations. - [Profile and language](https://docs.oncanary.com/help/admin/language-and-profile.md): Update your personal details, choose the web-app language, and manage your session. - [Troubleshooting](https://docs.oncanary.com/help/troubleshooting/overview.md): Diagnose access, record, mobile, scan, and API issues in Canary. - [QR and barcode scan issues](https://docs.oncanary.com/help/troubleshooting/qr-scan-issues.md): Fix camera, label, identifier assignment, and record-resolution problems. - [API errors](https://docs.oncanary.com/help/troubleshooting/api-errors.md): Diagnose public API authentication, scope, validation, conflict, and rate-limit responses. - [Build with Canary](https://docs.oncanary.com/introduction.md): Connect maintenance work, equipment, meters, inventory, and external systems - [Make your first request](https://docs.oncanary.com/quickstart.md): Connect to the Canary API with curl, JavaScript, or Python - [Authentication and scopes](https://docs.oncanary.com/authentication.md): Create, protect, and scope Canary API keys - [API overview](https://docs.oncanary.com/api-reference/overview.md): Base URL, response conventions, headers, and the generated Canary API reference - [Resource model](https://docs.oncanary.com/api-reference/resource-model.md): How public Canary resources connect and which lifecycle rules integrations should preserve - [Identifiers and scanning](https://docs.oncanary.com/guides/identifiers.md): Attach, generate, import, and resolve scanner payloads for Canary resources - [Pagination](https://docs.oncanary.com/guides/pagination.md): Traverse Canary-native, meter-reading, and compatibility lists safely - [Error handling](https://docs.oncanary.com/guides/errors.md): Use status codes, problem details, and request IDs to handle Canary API failures - [Rate limits](https://docs.oncanary.com/guides/rate-limits.md): Read request budgets and retry Canary API calls safely - [Integration patterns](https://docs.oncanary.com/guides/integration-patterns.md): Production patterns for syncs, request approval, custom fields, uploads, and retries - [List work orders](https://docs.oncanary.com/api-reference/work-orders/list-work-orders.md): Retrieve a paginated list of work orders - [Create a work order](https://docs.oncanary.com/api-reference/work-orders/create-a-work-order.md): Create a new work order - [Get a work order](https://docs.oncanary.com/api-reference/work-orders/get-a-work-order.md): Retrieve a single work order by ID - [Read retained work-order expense entries](https://docs.oncanary.com/api-reference/work-orders/read-retained-work-order-expense-entries.md) - [Record an expense attributed to an active organization user](https://docs.oncanary.com/api-reference/work-orders/record-an-expense-attributed-to-an-active-organization-user.md): The API key remains the actor. user_id attributes the expense without impersonating the user. Requires enabled cost tracking and an active work order. Does not modify employee rates or purchase costs. - [Retire an expense while retaining its audit history](https://docs.oncanary.com/api-reference/work-orders/retire-an-expense-while-retaining-its-audit-history.md): Available for authorized cleanup after cost tracking is disabled. Does not physically delete the expense. - [Read work-order parts and available operations](https://docs.oncanary.com/api-reference/work-orders/read-work-order-parts-and-available-operations.md) - [Replace usage or transition work-order part status](https://docs.oncanary.com/api-reference/work-orders/replace-usage-or-transition-work-order-part-status.md): Reuse the identical command and idempotency key after an uncertain response. Refetch the section after a version conflict. Issued quantity edits append stock corrections. - [Update a work order](https://docs.oncanary.com/api-reference/work-orders/update-a-work-order.md): Update an existing work order - [Soft-delete a work order](https://docs.oncanary.com/api-reference/work-orders/soft-delete-a-work-order.md): Soft-delete a work order while retaining maintenance history, costs, procedure results, and audit evidence. The work order is removed from normal public reads. Repeated requests for the same work order return 204 without changing its original deletion timestamp. - [Create a work order or approve a work request](https://docs.oncanary.com/api-reference/work-orders/create-a-work-order-or-approve-a-work-request.md): When workRequestId is supplied, creates and links the Work Order atomically and approves the Request. Replays return the existing linked Work Order ID. - [List work requests](https://docs.oncanary.com/api-reference/work-requests/list-work-requests.md) - [Create a work request](https://docs.oncanary.com/api-reference/work-requests/create-a-work-request.md) - [Get a work request](https://docs.oncanary.com/api-reference/work-requests/get-a-work-request.md) - [Update a work request](https://docs.oncanary.com/api-reference/work-requests/update-a-work-request.md) - [Delete a work request](https://docs.oncanary.com/api-reference/work-requests/delete-a-work-request.md) - [Upload a work request attachment](https://docs.oncanary.com/api-reference/work-requests/upload-a-work-request-attachment.md) - [Delete a work request attachment by filename](https://docs.oncanary.com/api-reference/work-requests/delete-a-work-request-attachment-by-filename.md) - [Upload a work request thumbnail](https://docs.oncanary.com/api-reference/work-requests/upload-a-work-request-thumbnail.md) - [List work request portals](https://docs.oncanary.com/api-reference/work-request-portals/list-work-request-portals.md) - [Create a work request portal](https://docs.oncanary.com/api-reference/work-request-portals/create-a-work-request-portal.md) - [Get a work request portal](https://docs.oncanary.com/api-reference/work-request-portals/get-a-work-request-portal.md) - [Update a work request portal](https://docs.oncanary.com/api-reference/work-request-portals/update-a-work-request-portal.md) - [Delete a work request portal](https://docs.oncanary.com/api-reference/work-request-portals/delete-a-work-request-portal.md) - [List assets](https://docs.oncanary.com/api-reference/assets/list-assets.md): Retrieve a paginated list of assets - [Create an asset](https://docs.oncanary.com/api-reference/assets/create-an-asset.md): Create a new asset - [Get an asset](https://docs.oncanary.com/api-reference/assets/get-an-asset.md): Retrieve a single asset by ID - [Update an asset](https://docs.oncanary.com/api-reference/assets/update-an-asset.md): Update an existing asset - [Link a part to an asset](https://docs.oncanary.com/api-reference/assets/link-a-part-to-an-asset.md): Link an existing part to an existing asset - [Unlink a part from an asset](https://docs.oncanary.com/api-reference/assets/unlink-a-part-from-an-asset.md): Remove a part link from an asset - [List locations](https://docs.oncanary.com/api-reference/locations/list-locations.md): Retrieve a paginated list of locations - [Create a location](https://docs.oncanary.com/api-reference/locations/create-a-location.md): Create a new location - [Get a location](https://docs.oncanary.com/api-reference/locations/get-a-location.md): Retrieve a single location by ID - [Update a location](https://docs.oncanary.com/api-reference/locations/update-a-location.md): Update an existing location - [List meters](https://docs.oncanary.com/api-reference/meters/list-meters.md): Retrieve a paginated list of meters - [Create a meter](https://docs.oncanary.com/api-reference/meters/create-a-meter.md): Create a new meter attached to an asset or location - [Get a meter](https://docs.oncanary.com/api-reference/meters/get-a-meter.md): Retrieve a single meter by ID - [Update a meter](https://docs.oncanary.com/api-reference/meters/update-a-meter.md): Update an existing meter - [Archive a meter](https://docs.oncanary.com/api-reference/meters/archive-a-meter.md): Archive an active meter. Existing readings are preserved. A meter used by an automation cannot be archived until that dependency is removed. - [List meter readings](https://docs.oncanary.com/api-reference/meter-readings/list-meter-readings.md): Retrieve paginated readings for a meter - [Create a meter reading](https://docs.oncanary.com/api-reference/meter-readings/create-a-meter-reading.md): Record a new reading for a meter - [List parts](https://docs.oncanary.com/api-reference/parts/list-parts.md): Retrieve a paginated list of parts - [Create a part](https://docs.oncanary.com/api-reference/parts/create-a-part.md): Create a new part - [Get a part](https://docs.oncanary.com/api-reference/parts/get-a-part.md): Retrieve a single part by ID - [Update a part](https://docs.oncanary.com/api-reference/parts/update-a-part.md): Update an existing part - [List custom-field definitions](https://docs.oncanary.com/api-reference/custom-fields/list-custom-field-definitions.md) - [Create custom-field definitions](https://docs.oncanary.com/api-reference/custom-fields/create-custom-field-definitions.md): Creates the supplied definitions atomically and appends them in request order - [Update or reorder a custom-field definition](https://docs.oncanary.com/api-reference/custom-fields/update-or-reorder-a-custom-field-definition.md) - [Archive a custom-field definition](https://docs.oncanary.com/api-reference/custom-fields/archive-a-custom-field-definition.md) - [List identifiers for a record](https://docs.oncanary.com/api-reference/identifiers/list-identifiers-for-a-record.md): Retrieve active identifiers assigned to one asset, location, or part - [Attach an identifier](https://docs.oncanary.com/api-reference/identifiers/attach-an-identifier.md): Assign an existing exact barcode or QR payload to a record - [Resolve a scanned payload](https://docs.oncanary.com/api-reference/identifiers/resolve-a-scanned-payload.md): Resolve an exact opaque payload within the API key organization - [Generate a Canary label](https://docs.oncanary.com/api-reference/identifiers/generate-a-canary-label.md): Generate an opaque Canary QR payload for a record - [Preview an identifier import](https://docs.oncanary.com/api-reference/identifiers/preview-an-identifier-import.md): Validate a batch of customer-owned identifiers without writing any records - [Apply an identifier import](https://docs.oncanary.com/api-reference/identifiers/apply-an-identifier-import.md): Atomically attach a previously validated batch of customer-owned identifiers - [Retire an identifier](https://docs.oncanary.com/api-reference/identifiers/retire-an-identifier.md): Retire an identifier and all of its active scan values - [What's new](https://docs.oncanary.com/updates/index.md): Track notable Canary documentation and product-reference updates. ## OpenAPI Specs - [openapi](/openapi.yaml)