Top Menu

Jump to content
Home
    • Projects
    • Work packages
    • News
    • Getting started
    • Introduction video
      Welcome to OpenProject Community
      Get a quick overview of project management and team collaboration with OpenProject. You can restart this video from the help menu.

    • Help and support
    • User guides
    • Videos
    • Shortcuts
    • Community forum
    • Professional support

    • Additional resources
    • Data privacy and security policy
    • Digital accessibility (DE)
    • OpenProject website
    • Security alerts / Newsletter
    • OpenProject blog
    • Release notes
    • Report a bug
    • Development roadmap
    • Add and edit translations
    • API documentation
  • Sign in
      Forgot your password?
      Create a new account

      or sign in with your existing account

      Google

Side Menu

  • Overview
  • Activity
  • Roadmap
  • Work packages
  • Calendars
  • Team planners
  • Boards
  • Forums
  • Wiki
    • Table of contents
      • Expanded. Click to collapseCollapsed. Click to showDeveloper
        • Hierarchy leafAccessibility Checklist
        • Hierarchy leafCode Review Guidelines
        • Expanded. Click to collapseCollapsed. Click to showContribution
          • Hierarchy leafGit Workflow
          • Hierarchy leafTranslations
        • Expanded. Click to collapseCollapsed. Click to showDeveloping Plugins
          • Hierarchy leafDeveloping an OmniAuth Authentication Plugin
        • Hierarchy leafRelease Process
        • Hierarchy leafReport a bug
        • Hierarchy leafSecurity
        • Hierarchy leafSetting up an OpenLDAP server for testing
        • Hierarchy leafTheme Features
      • Hierarchy leafDownload
      • Expanded. Click to collapseCollapsed. Click to showFeature tour
        • Hierarchy leafRelease Notes OpenProject 30
        • Expanded. Click to collapseCollapsed. Click to showRelease Notes OpenProject 30 - Overview
          • Hierarchy leafGlossary
          • Hierarchy leafRelease Notes - Accessibility
          • Hierarchy leafRelease Notes - Accessibility changes
          • Hierarchy leafRelease Notes - Add work package queries as menu items to sidebar
          • Hierarchy leafRelease Notes - Copy projects based on Templates
          • Hierarchy leafRelease Notes - Design changes
          • Hierarchy leafRelease Notes - Fixed Bugs
          • Hierarchy leafRelease Notes - Keyboard Shortcuts
          • Hierarchy leafRelease Notes - Project settings
          • Hierarchy leafRelease Notes - Ruby&Rails Update
          • Hierarchy leafRelease Notes - Security
          • Hierarchy leafRelease Notes - Timelines
          • Hierarchy leafRelease Notes - Work packages
      • Hierarchy leafHowto create animated gifs
      • Hierarchy leafMigration Squashing
      • Hierarchy leafMod security
      • Hierarchy leafNew work package page
      • Hierarchy leafOP3 to OP4 Debian upgrade
      • Hierarchy leafOP4 Ubuntu1404 Stable with MySQL in production
      • Hierarchy leafOpenProject 40 Development Setup
      • Expanded. Click to collapseCollapsed. Click to showOpenProject Foundation
        • Hierarchy leafBoards
        • Hierarchy leafMembers
        • Hierarchy leafOPF-Meetings
        • Hierarchy leafStatutes
      • Expanded. Click to collapseCollapsed. Click to showRelease Notes
        • Hierarchy leafOpenProject released on Bitnami
      • Expanded. Click to collapseCollapsed. Click to showRelease Notes OpenProject 40 - Overview
        • Hierarchy leafRelease Notes OpenProject 40 - Accessibility improvements
        • Hierarchy leafRelease Notes OpenProject 40 - Column header functions in work package table
        • Hierarchy leafRelease Notes OpenProject 40 - Improved Design
        • Hierarchy leafRelease Notes OpenProject 40 - Integrated query title on work package page
        • Hierarchy leafRelease Notes OpenProject 40 - Integrated toolbar on work package page
        • Hierarchy leafRelease Notes OpenProject 40 - OmniAuth integration for OpenProject
        • Hierarchy leafRelease Notes OpenProject 40 - Work package details pane
      • Expanded. Click to collapseCollapsed. Click to showSecurity and privacy
        • Hierarchy leafFAQ
      • Expanded. Click to collapseCollapsed. Click to showSupport
        • Expanded. Click to collapseCollapsed. Click to showDownload and Installation
          • Hierarchy leafInstallation MacOS
          • Expanded. Click to collapseCollapsed. Click to showInstallation OpenProject 3 0
            • Hierarchy leafDebian Stable with MySQL in production
            • Hierarchy leafInstallation Ubuntu
            • Hierarchy leafInstallation Windows
            • Hierarchy leafInstallation on Centos 65 x64 with Apache and PostgreSQL 93
          • Expanded. Click to collapseCollapsed. Click to showInstallation OpenProject 40
            • Hierarchy leafOP4 Debian Stable with MySQL in production
          • Expanded. Click to collapseCollapsed. Click to showMigration paths
            • Hierarchy leafFrom Chilliproject to OpenProject
            • Hierarchy leafMigration 15 to 30
            • Hierarchy leafMigration 24 to 30
            • Hierarchy leafMigration Redmine 2x › OpenProject 30
            • Hierarchy leafOpenProject 3 Migration
          • Hierarchy leafOpenProject 40
        • Expanded. Click to collapseCollapsed. Click to showNews
          • Hierarchy leafNew OpenProject Translations Plugin
          • Hierarchy leafNew Plugin on OpenProjectorg Local Avatars
          • Hierarchy leafNew design for OpenProject
          • Hierarchy leafNews Accessibility workshop for OpenProject
          • Hierarchy leafNews Glossary for OpenProject
          • Hierarchy leafNews Heartbleed fixed
          • Hierarchy leafNews Icon Fonts
          • Hierarchy leafNews OpenProject 30 Release
          • Hierarchy leafNews Release GitHub Integration Plugin
          • Hierarchy leafNews Success Story Deutsche Telekom
          • Hierarchy leafNews Timelines
          • Hierarchy leafOpenProject 3013 released
          • Hierarchy leafOpenProject 3017 released
          • Hierarchy leafOpenProject 40 released
          • Hierarchy leafOpenProject 40 will be coming soon
          • Hierarchy leafOpenProject 405 released
          • Hierarchy leafOpenProject and pkgrio
          • Hierarchy leafOpenProject news moved to a new blog
          • Hierarchy leafOpenProjectBitnami
          • Hierarchy leafPackager version with plugins released ("Community edition")
          • Hierarchy leafRegistration OpenProject-Foundation
          • Hierarchy leafRelease OpenProject AuthPlugins
          • Hierarchy leafUpdates on OpenProject
          • Hierarchy leafWe need your feedback for the the new fullscreen view for work packages
        • Hierarchy leafOpenProject Plug-Ins
      • Hierarchy leafWiki
You are here:
  • Forums
  • Development

Content

Create work package with custom fields through API

Added by Blaise D about 6 years ago

Hello!

I am attempting to create work packages programmatically via the OpenProject API for a project with contains multiple custom fields. Unfortunately, I am running into a validation error with my work package payload. Following from the API documentation, I have posted to the ‘/work_packages/form’ endpoint to retrieve default values for all properties. After filling in my values, I still receive a validation error for a blank subject, even though it is filled out in my payload.

Here is my post using Python’s requests library:

    response = requests.post(
        'http://my_domain/api/v3/projects/11/work_packages/form',
        auth=('apikey', API_KEY),
        data=payload
    )

Where an example payload would be the following:

{
   "_links": {
      "assignee": {
         "href": "/api/v3/users/12", 
         "id": 12, 
         "name": "John Smith", 
         "title": "John Smith"
      }, 
      "category": {
         "href": null
      }, 
      "customField3": {
         "href": "/api/v3/string_objects?value=cf3_val", 
         "title": "cf3_val"
      }, 
      "customField4": {
         "href": "/api/v3/string_objects?value=cf4_val", 
         "title": "cf4_val"
      }, 
      "parent": {
         "href": null
      }, 
      "priority": {
         "href": "/api/v3/priorities/8"
      }, 
      "responsible": {
         "href": "/api/v3/users/12", 
         "id": 12, 
         "name": "John Smith", 
         "title": "John Smith"
      }, 
      "status": {
         "href": "/api/v3/statuses/1"
      }, 
      "type": {
         "href": "/api/v3/types/1"
      }, 
      "version": {
         "href": null
      }
   }, 
   "customField5": "123123", 
   "description": {
      "format": "textile", 
      "html": "", 
      "raw": "Created from batch script"
   }, 
   "dueDate": "2016-11-10", 
   "estimatedTime": null, 
   "lockVersion": 0, 
   "parentId": null, 
   "percentageDone": 0, 
   "remainingTime": null, 
   "startDate": "2016-11-10", 
   "subject": "123123"
}

Here is the relevant schema information:

        "schema": {
            "_links": {},
            "_type": "Schema",
<snip>
            "subject": {
                "maxLength": 255,
                "minLength": 1,
                "name": "Subject",
                "required": true,
                "type": "String",
                "writable": true
            },

And the validation errors returned:

        "validationErrors": {
            "subject": {
                "_embedded": {
                    "details": {
                        "attribute": "subject"
                    }
                },
                "_type": "Error",
                "errorIdentifier": "urn:openproject-org:api:v3:errors:PropertyConstraintViolation",
                "message": "Subject can't be blank."
            }
        }
    },

Any assistance would be greatly appreciated! I am at a loss as to what could be the problem, as the subject is included here in the same way that it is when creating a work package from the web interface.

Blaise


Replies (4)

RE: Create work package with custom fields through API - Added by Jens Ulferts about 6 years ago

Hi Blaise,

this message is typically returned when no payload has been transmitted with the POST request. I am aware that you seem to have sent a body with the request but OpenProject does not seem to think so.

When using your payload and posting it via e.g. Postman (after having adapted the links) I get an OK result.

Therefore I would look into the python code. I skimmed through the Request documentation and stumbled over this here:

http://docs.python-requests.org/en/master/user/quickstart/#more-complicated-post-requests

where it notes:

There are many times that you want to send data that is not form-encoded. If you pass in a string instead of a dict, that data will be posted directly.

As OpenProject expects a json encoded body, your code should pass a string and thus you should adapt your python code to the following:

response = requests.post(
        'http://my_domain/api/v3/projects/11/work_packages/form',
        auth=('apikey', API_KEY),
        data=json.dumps(payload)
    )

Hope that helps.

Regards

Jens

RE: Create work package with custom fields through API - Added by Blaise D about 6 years ago

That did it!

I made the following changes to my Python script:

headers = {
    'content-type': 'application/json'
}

response = requests.post(
    'http://my_domain/api/v3/projects/11/work_packages/form',
     auth=('apikey', API_KEY),
     data=json.dumps(payload),
     headers=headers
)

and I now receive the 201 response and WorkPackage creation information confirming the package creation.

Thank you so much for your assistance, Jens! This was a subtle issue with my usage of the requests API that I was unable to recognize.

Cheers,
Blaise

RE: Create work package with custom fields through API - Added by Jens Ulferts about 6 years ago

Great, enjoy.

RE: Create work package with custom fields through API - Added by Otmane Azeroual almost 6 years ago

Hi,

I tried to create with this code a work packages:

var xhr2 = new XMLHttpRequest();

var data = ‘{subject subject“,”description“: {”format“: ”textile“, ”raw“: ”My raw textile formatted description. Bye guys!“}, ”_links“: {”type“: {”href“:”/api/v3/types/1“, ”title“: ”Task“}, ”status“:{”href“:”/api/v3/statuses/1“}, ”priority“:{”href“:”/api/v3/priorities/8“, ”title“: ”normal“}, ”assignee“: {”href“: ”/api/v3/users/1"}}}}’;

xhr2.open(‘GET’, ‘mydomain/openproject/api/v3/projects/dsds/work_packages/’);
xhr2.setRequestHeader(‘API_KEY’, ‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’);
xhr2.setRequestHeader(‘Content-type’, ‘application/json’);

xhr2.onreadystatechange = function() {
if (xhr2.readyState 4 && xhr2.status 200) {
console.log(xhr2.responseText);
}
console.log(xhr2.readyState + “-” + xhr2.status);
};

xhr2.send(data);

Still i only get readyState == 4 and status = 0 in the console. the user admin is existing.

Do you know what the problem is? can someone help me?

Thank you for your help!

Best regards
Otmane

  • (1 - 4/4)
Loading...