---
description: >
  Overview of how to define, provide, and consume CAP services, covering generic providers, status flows, constraints, custom code, and media data.
---

# Providing and Consuming Services

[Defining Provided Services](providing-services.md)
   : Learn how to define services in CDS, expose projections on domain models, and declare the data entities and operations your services provide.

[Served Out-of-the-Box](served-ootb.md)
   : Discover the generic service providers that automatically handle CRUD operations, search, pagination, and input validation without custom code.

[Status Flows](status-flows.md)
   : Model and validate status transitions in a controlled and reliable way, eliminating the need for extensive custom coding.

[Constraints](constraints.md)
   : Express validation conditions declaratively using CXL expressions that are validated automatically whenever data is written.

[Custom Code](custom-code.md)
   : Add custom event handlers and service implementations for use cases that require domain-specific logic beyond generic capabilities.

[Custom Actions](custom-actions.md)
   : Define and implement domain-specific operations as custom actions and functions in addition to common CRUD operations.

[Serving Media Data](media-data.md)
   : Store and stream media and binary data either in the database or external repositories using OData V4's media resource support.
