> For the complete documentation index, see [llms.txt](https://docs.stellic.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.stellic.com/stellic-partner-api/catalog-sections/read-a-section-constraint.md).

# Read a section constraint

Use this endpoint to read one section constraint: its section, requirement group, action, note, and start and end times. [`PUT /catalog/section/constraint/{sis_id}`](/stellic-partner-api/catalog-sections/replace-a-section-constraint.md) accepts this response as its body, so read the record before correcting it.

## GET /catalog/section/constraint/{sis\_id}

>

```json
{"openapi":"3.0.0","info":{"title":"Stellic for Developers","version":"1.0"},"tags":[{"name":"Catalog Sections"}],"servers":[{"url":"https://{institution}.stellic.com/partnerapi/v1","variables":{"institution":{"default":"{institution}","description":"Your institution's Stellic subdomain: the part before `.stellic.com` in the URL you use to sign in. It becomes the host in every request, as in `https://{institution}.stellic.com/partnerapi/v1/...`. Replace the `{institution}` placeholder with your subdomain before sending."}}}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Personal Access Token issued by your Stellic integration partner. Send it as `Authorization: Bearer <token>` on every request. One token per institution; do not share across environments."}},"schemas":{"SectionConstraintResponse":{"type":"object","description":"A section constraint record.","properties":{"sis_id":{"type":"string","description":"The record's identifier (the `{sis_id}` in the URL)."},"section_id":{"type":"string","description":"Catalog ID (`uni_id`) of the section the constraint applies to."},"requirement_id":{"type":"string","description":"Requirement group identifier, or an empty string when the record has no requirement group."},"action":{"type":"string","description":"Action the constraint applies."},"note":{"type":"string","description":"Free text stored with the record; an empty string when none was sent."},"start_timestamp":{"type":"string","format":"date-time","nullable":true,"description":"ISO-8601 timestamp in UTC (for example `2025-12-02T00:00:00Z`), or `null`."},"end_timestamp":{"type":"string","format":"date-time","nullable":true,"description":"ISO-8601 timestamp in UTC (for example `2026-01-15T00:00:00Z`), or `null`."}}},"SectionConstraintErrorDetail":{"type":"object","description":"Error body for 404 and 409 responses on the section constraint endpoints.","properties":{"detail":{"type":"string","description":"Human-readable reason."}}}}},"paths":{"/catalog/section/constraint/{sis_id}":{"get":{"tags":["Catalog Sections"],"parameters":[{"name":"sis_id","in":"path","required":true,"description":"Identifier of the constraint record: the `section_constraint_id` your schedule feed carries for feed-loaded records, or the value you chose on POST. Records removed by DELETE or by a schedule sync no longer match.","schema":{"type":"string"}}],"responses":{"200":{"description":"Constraint found. The body is the record itself, not wrapped in an envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SectionConstraintResponse"}}}},"401":{"description":"Missing or invalid Bearer token."},"403":{"description":"Your IP address isn't on the allowlist for this endpoint. Contact Stellic to add it; the response includes the `client_ip` Stellic saw.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"client_ip":{"type":"string"}}}}}},"404":{"description":"No constraint record matches `{sis_id}`, including records already removed by DELETE or by a schedule sync.\n\nCommon causes:\n- Unknown `{sis_id}`: returns `No section constraint found for sis_id {sis_id}`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SectionConstraintErrorDetail"}}}},"409":{"description":"More than one record carries this `{sis_id}`. Feed-loaded identifiers are not checked for uniqueness, and the platform refuses to pick one at random.\n\nCommon causes:\n- Duplicate identifiers in your schedule feed: returns `sis_id {sis_id} matches {count} section constraints`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SectionConstraintErrorDetail"}}}}}}}}}
```

#### Notes

* **`{sis_id}` is the constraint's own identifier.** It isn't the section's catalog ID (`section_id`) or the requirement group (`requirement_id`). For constraints loaded by your data sync, it's the section constraint ID the sync carries.
* **Your data sync can change a constraint's `{sis_id}`.** If a constraint you created matches a row in your data sync (same section, action, and requirement group), the next sync keeps it but gives it the sync's identifier, and your original `{sis_id}` then returns 404.
* **An identifier shared by several constraints returns 409.** Fix the duplicate in your data sync.

#### Related APIs

* [`POST /catalog/section/constraint/{sis_id}`](/stellic-partner-api/catalog-sections/create-a-section-constraint.md) to create a constraint.
* [`PUT /catalog/section/constraint/{sis_id}`](/stellic-partner-api/catalog-sections/replace-a-section-constraint.md) to replace it.
* [`DELETE /catalog/section/constraint/{sis_id}`](/stellic-partner-api/catalog-sections/remove-a-section-constraint.md) to remove it.
* [`POST /catalog/section/restriction/{id}`](/stellic-partner-api/catalog-sections/add-a-restriction-to-a-section.md) for rules based on student sets rather than a requirement group.
